如何使用HTML标签向JSP页面显示以字节为单位的图像?

时间:2009-06-03 08:53:23

标签: java html jsp image

我有ByteArrayOutputStream,它包含一个以字节为单位的JPEG图像。我的要求是在JSP页面中显示该图像(使用HTML标签在前端显示图像)。我该怎么做?

我已经推荐了BufferedImage课程,但这对我来说很困惑,因为我是新手。

2 个答案:

答案 0 :(得分:19)

如果图像不是太大,可以按照以下步骤进行操作。

<img src="data:image/jpg;base64,iVBORw0KGgoAAAANS..." />

iVBORw0KGgoAAAANS ...是Base64编码的字节。

Base64编码可以使用库完成,例如Ostermiller Java Utilities' Base64 Java Library org.apache.commons.codec.binary.Base64

答案 1 :(得分:3)

除非您使用"data" URI(对小图片有用),否则浏览器会发出两个请求:一个用于HTML,另一个用于图像。您需要能够输出img标记,其中包含足够的信息,以便您使用ByteArrayOutputStream中的数据回复后续的图像请求。

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

如果您可以延迟图像生成,直到浏览器首先请求实际图像,这是非常理想的。这可能涉及在图像的URL中添加额外的参数 - 例如图表上的点,或要生成的缩略图的大小,或者图像的任何内容。

如果您是JSP和HTML的新手,我强烈建议您首先专注于HTML方面。在计算出如何动态提供服务之前,请确定您需要提供的服务以及浏览器将执行的操作。从HTML和图像的静态页面和文件开始,然后确定如何生成它们。