我想转换BufferedImage
为将在JSP页面上显示的图像。我该如何实现?
首先,JSP是一种视图技术,提供了用于编写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
响应的内容Content- Type
,Content-Length
以及代表该内容的一组响应标头(和/或Content- disposition
)。您可以使用ImageIO#write()
写BufferedImage
来的OutputStream
。
您可以在此处找到此类图像servlet的基本示例。您只需要替换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);
最后,使用数据URI方案在转发的JSP中显示它,如下所示:
<img src="data:image/png;base64,${imageAsBase64}" />
您只需要记住,这不会给服务器或客户端提供缓存图像的机会。因此,如果图像不是临时的,则此方法效率很低。
问题内容: 在StackOverflow上已经存在类似此链接的问题,并且可接受的答案是“广播”: 在我的程序中,我尝试: 不幸的是,我得到运行时错误: sun.awt.image.ToolkitImage无法转换为java.awt.image.BufferedImage 显然,投射不起作用。 问题是:将Image转换为BufferedImage的正确方法是(或存在)什么? 问题答案: 从Java游
问题内容: 我这里有点问题。 我有一个applet,用户可以在其中“绘制”它。为此,我使用java.awt.Graphics2D。但是,如何将用户绘图图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他内容?我不知道该怎么做。 谢谢。 问题答案: 我这样做,并且效果很好: 就这些了:)谢谢大家:)
问题内容: 我正在使用servlet上传图像。为了执行调整大小的操作,我将InputStream转换为BufferedImage。现在我想将其保存在mongoDB中。因为据我所知,我是mongoDB的新手,所以GridFS采用InputStream。 那么,有什么方法可以将BufferedImage转换为InputStream吗? 问题答案: 您需要使用该类将BufferedImage保存为,然后
我必须将IplImage转换为BufferedImage…对我来说,一个简单的任务变得非常复杂。我正在Mac OSX上使用JavaCv 1.0(它与OpenCV 3.0链接)。 在旧的JavaCV API中有IplImage方法#GetBuffereImage,但我在新的1.0 API中再也找不到它了。所以我试着把IplImage转换成字节数组,把字节数组转换成BufferedImage。我发现这
问题内容: 如何在Java中转换为? 请注意,现有答案显然是不正确的,因为它使用方法和,如果尚未加载图像(根据定义,它是一个异步对象),则可以返回。 请提供更正确的答案,或提供更多证明现有答案已经正确的证据。 问题答案: 如果这对您很重要,则可以使用“等待”来加载图像,然后就不必担心提供 看看JavaDocs了解更多详细信息 我不想添加任何GUI,我只需要下载图像或失败 好吧,如果您“需要下载”该
问题内容: 我正在尝试使用以下代码将Icon()转换为Image(): 问题是,函数在上抛出。 对于记录,该值为默认图标(通过获取) 以下是引发异常的详细信息: 如果您需要更多详细信息,请告诉我,我将编辑我的信息以添加它们。 谢谢! 问题答案: 刚刚找到了一个代码段,如果您想更频繁地包装那些表现不佳的LAF提供的图标,可能会有所帮助: 要在您的代码段中使用,只需传递任意组件: