【发布时间】:2010-10-30 22:23:46
【问题描述】:
我有 ByteArrayOutputStream,其中包含以字节为单位的 JPEG 图像。我的要求是在JSP 页面中显示该图像(使用 HTML 标记在前端显示图像)。我该怎么做?
我已经提到了BufferedImage 课程,但这让我感到困惑,因为我是新手。
【问题讨论】:
我有 ByteArrayOutputStream,其中包含以字节为单位的 JPEG 图像。我的要求是在JSP 页面中显示该图像(使用 HTML 标记在前端显示图像)。我该怎么做?
我已经提到了BufferedImage 课程,但这让我感到困惑,因为我是新手。
【问题讨论】:
除非您使用"data" URI(对小图像有用),否则浏览器将发出两个请求:一个请求 HTML,另一个请求图像。您需要能够输出 img 标签,其中包含足够的信息,以便您使用 ByteArrayOutputStream 中的数据响应后续对图像的请求。
根据您获取该 JPEG 文件的方式以及您的服务器如何横向扩展,这可能涉及将图像写入磁盘、将其缓存在内存中、重新生成它或这些的任意组合。
如果您可以延迟图像生成,直到浏览器首先请求实际图像,这是非常理想的。这可能涉及在图像的 URL 中添加额外的参数 - 例如图表上的点,或要生成的缩略图的大小,或者您的图像是什么。
如果您不熟悉 JSP 和 HTML,我强烈建议您首先关注 HTML 方面。在确定如何动态提供服务之前,先确定您需要提供什么服务以及浏览器会做什么。从 HTML 和图像的静态页面和文件开始,然后研究如何生成它们。
【讨论】:
如果图片不是太大,可以如下操作。
<img src="data:image/jpg;base64,iVBORw0KGgoAAAANS..." />
其中iVBORw0KGgoAAAANS... 是Base64 编码字节。
Base64 编码可以通过库完成,例如 Ostermiller Java Utilities' Base64 Java Library 或 org.apache.commons.codec.binary.Base64。
【讨论】: