Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用HTML标记将以字节为单位的图像显示到JSP页面?_Java_Html_Jsp_Image - Fatal编程技术网

Java 如何使用HTML标记将以字节为单位的图像显示到JSP页面?

Java 如何使用HTML标记将以字节为单位的图像显示到JSP页面?,java,html,jsp,image,Java,Html,Jsp,Image,我有ByteArrayOutputStream,它包含一个以字节为单位的JPEG图像。我的要求是在页面中显示该图像(使用HTML标记在前端显示图像)。我该怎么做 我提到了BufferedImage类,但它让我感到困惑,因为我是新手。除非您使用a(对小图像有用),否则浏览器将发出两个请求:一个请求HTML,另一个请求图像。您需要能够输出一个img标记,该标记包含足够的信息,使您能够使用ByteArrayOutputStream中的数据响应后续的图像请求 根据您获取JPEG文件的方式以及服务器的扩展

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

我提到了
BufferedImage
类,但它让我感到困惑,因为我是新手。

除非您使用a(对小图像有用),否则浏览器将发出两个请求:一个请求HTML,另一个请求图像。您需要能够输出一个
img
标记,该标记包含足够的信息,使您能够使用
ByteArrayOutputStream
中的数据响应后续的图像请求

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

如果您可以将图像生成延迟到浏览器首先请求实际图像时,那就非常理想了。这可能涉及到在图像的URL中添加额外的参数,例如图形上的点,或者要生成的缩略图的大小,或者您的图像是什么


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

如果图像不是太大,可以按如下方法进行

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

其中
ivborw0kgoaaaans
。。。是编码的字节


Base64编码可以使用库来完成,如或。

此方法将图像内嵌到正在呈现的html中,这也会增加文件大小。我的图像非常小。。它是一个大小为width=“166”height=“44”的条形码图像。。在上面的例子中,如何从ByteArrayOutputStream获取图像?166x44并不是“非常小”(通常数据URI用于非常小的图像),但是使用条形码您可能会侥幸逃脱。基本上,您需要对数据进行base64编码。这是一个单独的、非常具体的问题,可能已经在堆栈溢出的其他地方讨论过了;int cByte=bais.read();while(cByte!=null){aList.add(cByte);cByte=bais.read();}byte[]result=Base64.encode(aList.toArray());String imageData=新字符串(结果),您可以使用imageData。