如何使用HTML标签在JSP页面上显示以字节形式存在的图像?

4
我有一个ByteArrayOutputStream,其中包含一个JPEG图像的字节。我的要求是在JSP页面中显示该图像(使用HTML标签在前端显示图像)。我该怎么做?
我已经参考了BufferedImage类,但对我来说很困惑,因为我是新手。
2个回答

19

这个方法将图像嵌入正在渲染的HTML中,这可能会增加文件大小。 - Prabhu R
我的图像非常小,只有宽度为"166",高度为"44"的条形码图像。在上述情况下,我该如何从ByteArrayOutputStream中获取图像? - Raja D
166x44并不算是“非常小”的(通常数据URI用于真正微小的图像),但对于条形码,您可能可以使用它。基本上,您需要对数据进行base64编码。这是一个单独的、非常具体的问题——可能已经在Stack Overflow的其他地方讨论过了。 - Jon Skeet
通过ByteArrayInputStream,并使用Commons: List aList = new ArrayList<Byte>(); int cByte = bais.read(); while (cByte != null) { aList.add(cByte); cByte = bais.read(); } byte[] result = Base64.encode(aList.toArray()); String imageData = new String(result)然后,您可以使用imageData。 - Valentin Rocher

3
除非您使用"data" URI(对于小图像很有用),否则浏览器将进行两个请求:一个用于HTML,另一个用于图像。 您需要能够输出包含足够信息的img标记,以便您可以使用ByteArrayOutputStream响应后续的图像请求中的数据。

根据您获取JPEG文件的方式以及服务器如何扩展,这可能涉及将图像写入磁盘,将其缓存在内存中,重新生成它或任何这些组合。

如果您可以将图像生成延迟到浏览器首次请求实际图像,则非常理想。 这可能涉及在图像的URL中添加额外的参数-例如图形上的点,要生成的缩略图大小或您的图像等。

如果您对JSP和HTML都不熟悉,我强烈建议您首先专注于HTML方面。 在确定动态提供内容之前,先确定您需要提供什么以及浏览器将执行的操作。 从HTML和图像的静态页面和文件开始,然后再确定如何生成它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接