gpt4 book ai didi

java - JSP 如何缩放图像?

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:10 25 4
gpt4 key购买 nike

有没有缩放图像然后显示在jsp页面中的方法?检索和显示图像时,我想以相同大小显示所有照片。有什么API可以做到吗?我从谷歌搜索过,我发现那些是关于使用 takeit 缩放图像但不能在网络应用程序中工作。

最佳答案

您可以使用内置的 Java 2D API为此(基本 Sun 教程 here)。

基本上,您需要创建一个 Servlet它得到一个 InputStream doGet() 中的原始图像方法,通过 Java 2D API 传递它,然后将其写入 OutputStream的 HTTP 响应。然后你把这个Servlet映射到某个url-pattern上就行了在web.xml ,例如/thumbs/*并在 src 中调用此 Servlet HTML 的属性 <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());
}

使用 web.xml 中映射的 servlet如下:

<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 完成,因为它是一种不适合此任务的 View 技术。


注意 2:这是一项相当昂贵(CPU 密集型)的任务,请记住这一点。您可能需要考虑自己预先缓存或预生成缩略图。

关于java - JSP 如何缩放图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2938698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com