gpt4 book ai didi

image - 如何将 BufferedImage 转换为图像以在 JSP 上显示

转载 作者:行者123 更新时间:2023-12-04 16:37:25 25 4
gpt4 key购买 nike

我想转换 BufferedImage到将显示在 JSP 页面上的图像。我怎样才能做到这一点?

最佳答案

首先,JSP 是一种 View 技术,它提供了一个模板来编写 HTML/CSS/JS,以及与后端 Java 代码交互以控制页面流和访问后端数据的能力。您的问题更多是在 HTML 中。
现在,要在 HTML 页面中显示图像,您需要 HTML <img>元素。要定义/分配图像,您只需让 src属性指向一个 URL。例如。

<img src="url/to/image.jpg" />
(它可以是相对于当前上下文,也可以是绝对 URL,例如以 http:// 开头)
如果图像是动态的,就像你的情况一样,你需要有一个 Servlet监听 url-pattern匹配图片网址。例如。
<img src="imageservlet/image.jpg" />
(这里 servlet 显然要映射到 URL 模式 /imageservlet/* 和图像标识符,这里是文件名,在这里可以通过 request.getPathInfo() 获得) <img src>将触发 GET 请求,因此您只需实现 doGet() servlet 的方法。要发送 HTTP 响应,您需要做的就是将一些内容写入 OutputStream的响应,以及一组表示内容的响应 header ( Content-TypeContent-Length 和/或 Content-disposition )。您可以使用 ImageIO#write() 写一个 BufferedImageOutputStream .
您可以找到此类图像 servlet 的基本示例 here .你只需要更换 Files#copy() ImageIO#write() .
response.setContentType("image/png");
ImageIO.write(bufferedImage, "png", response.getOutputStream());

作为一种完全不同的替代方法,您还可以让 servlet 将图像转换为 Base64 编码的字符串并将其传递给 JSP:
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", output);
String imageAsBase64 = Base64.getEncoder().encodeToString(output.toByteArray());
request.setAttribute("imageAsBase64", imageAsBase64);
request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);
最后使用 data URI scheme 在转发的 JSP 中显示它如下:
<img src="data:image/png;base64,${imageAsBase64}" />
您只需要记住,这不会给服务器和客户端缓存图像的机会。因此,如果图像不是临时的,这种方法显然是低效的。

也可以看看:
  • How to retrieve and display images from a database in a JSP page?
  • Simplest way to serve static data from outside the application server in a Java web application
  • 关于image - 如何将 BufferedImage 转换为图像以在 JSP 上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438375/

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