反正有缩放图像然后显示在jsp页面中的方法吗?检索并显示图像时,我想以相同尺寸显示所有照片。有没有API可以做到?我从谷歌搜索,发现的内容是使用Takeit缩放图像,但无法在Web应用程序中使用。
您可以为此使用内置的Java 2D API(此处是基本的Sun教程)。
基本上,您需要创建一个Servlet,该Servlet获取方法InputStream中的原始图像doGet(),将其传递给Java 2D API,然后将其写入OutputStreamHTTP响应的。然后你只需映射这个servlet上有一定url- pattern的web.xml,例如/thumbs/*在呼叫这个servlet src的HTML属性<img>元素。
InputStream
doGet()
OutputStream
url- pattern
web.xml
/thumbs/*
src
<img>
这是一个基本的启动示例(您仍然需要自己以所需的方式处理意外情况):
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // First get image file name as request pathinfo (or parameter, whatever you want). String imageFilename = request.getPathInfo().substring(1); // And get the thumbnail dimensions as request parameters as well. int thumbWidth = Integer.parseInt(request.getParameter("w")); int thumbHeight = Integer.parseInt(request.getParameter("h")); // Then get an InputStream of image from for example local disk file system. InputStream imageInput = new FileInputStream(new File("/images", imageFilename)); // Now scale the image using Java 2D API to the desired thumb size. Image image = ImageIO.read(imageInput); BufferedImage thumb = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = thumb.createGraphics(); graphics2D.setBackground(Color.WHITE); graphics2D.setPaint(Color.WHITE); graphics2D.fillRect(0, 0, thumbWidth, thumbHeight); graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null); // Write the image as JPG to the response along with correct content type. response.setContentType("image/jpeg"); ImageIO.write(thumb, "JPG", response.getOutputStream()); }
servlet映射web.xml如下:
<servlet> <servlet-name>thumbServlet</servlet-name> <servlet-class>com.example.ThumbServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>thumbServlet</servlet-name> <url-pattern>/thumbs/*</url-pattern> </servlet-mapping>
可以如下使用:
<img src="thumbs/filename.jpg?w=100&h=100" width="100" height="100">
注意:不,不能单独使用JSP来完成此操作,因为它是不适合此任务的视图技术。
注意2:请记住这一点,这是一项非常昂贵(CPU密集型)的任务。您可能需要考虑自己预先缓存或预生成拇指。