Jsp 将BuffereImage转换为img时出现问题

Jsp 将BuffereImage转换为img时出现问题,jsp,file-upload,bufferedimage,Jsp,File Upload,Bufferedimage,我正在编写代码,从数据库中读取blob图像,并希望在jsp页面上显示该图像 通过谷歌我找到了一个解决方案,字节[]可以转换成缓冲图像 但是如何在jsp页面上使用缓冲图像…?最简单的方法是使用servlet或其他jsp发送图像 如果您使用JSP,请注意只发送没有任何html(或空行)的二进制文件。例如: response.setContentType("image/png"); OutputStream sos = response.getOutputStream(); BufferedImage

我正在编写代码,从数据库中读取blob图像,并希望在jsp页面上显示该图像

通过谷歌我找到了一个解决方案,字节[]可以转换成缓冲图像


但是如何在jsp页面上使用缓冲图像…?

最简单的方法是使用servlet或其他jsp发送图像

如果您使用JSP,请注意只发送没有任何html(或空行)的二进制文件。例如:

response.setContentType("image/png");
OutputStream sos = response.getOutputStream();
BufferedImage myImage = stuff.getImage(request.getParameter("id"));
ImageIO.write(myImage, "png", sos);
sos.flush();
sos.close();
(这里使用javax.imageio.imageio)

然后您可以简单地使用如下图像:

<img src="myservlet.jsp?id=somestuff">

我建议编写一个servlet
ImageProvider

<servlet>
    <servlet-name>showMyImage</servlet-name>
    <servlet-class>com.photo.gallery.ImageProvider</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>showMyImage</servlet-name>
    <url-pattern>/showMyImage</url-pattern>
</servlet-mapping>
public void doGet(HttpServletRequest request, HttpServletResponse response) {
    /*Now you have the byte[] array by some way...
     * Lets call it imageBytes[] */
    response.setContentType("image/jpeg");
    response.setContentLength(imageBytes.length);
    response.getOutputStream().write(imageBytes);
}

您根本不需要
buffereImage
。它的用途完全不同(能够操纵(调整大小、倾斜、裁剪等)图像)。只需将
字节[]
直接写入tusar回答的
response.getOutputStream()
。但是我没有使用servlet…我使用的是Spring和Hibernate…当我们使用Spring时,您能告诉我如何在jsp中使用response.getOutputStream吗controller@BalusC:感谢您提供有关BuffereImage的信息
public void doGet(HttpServletRequest request, HttpServletResponse response) {
    /*Now you have the byte[] array by some way...
     * Lets call it imageBytes[] */
    response.setContentType("image/jpeg");
    response.setContentLength(imageBytes.length);
    response.getOutputStream().write(imageBytes);
}