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

标签 image jsp bufferedimage

我想转换 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/

    相关文章:

    html - 可以从 pandoc 的独立 HTML 文件中提取图像吗?

    java - Spring 框架中错误的请求绑定(bind)对象

    java - 如何通过session获取id

    java - 从不可见的 AWT 组件创建图像?

    java - JPanel 的图形在左侧闪烁

    c++ - 使用 C++ 读取原始图像文件

    c# - 在 WPF 中放大图像

    c++ - 如何生成位图头数据然后使用C++写入文件

    javascript - 使用 Jquery 的 AJAX 无法跨 JSP 页面工作

    java - 如何获取调整大小的BufferedImage