我尝试将图像转换为byteArray,然后使用HttpServlet类中的BufferedOutputStream将其打印在我的jsp页面上,并使用以下代码:
public byte[] extractBytes(String imagePath) {
byte[] imageInByte = new byte[0];
try {
ByteArrayOutputStream baos = null;
BufferedImage originalImage = ImageIO.read(new File(imagePath));
baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
imageInByte = baos.toByteArray();
} catch (Exception ex) {
ex.printStackTrace();
}
return imageInByte;
}
要打印它:
imageInByte = extractBytes(requestedUrl);
response.setContentType(
"image/jpeg");
response.setContentLength(imageInByte.length);
response.setHeader(
"Content-Disposition", "inline; filename=\"" + name
+ "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
time = System.currentTimeMillis();
input = new BufferedInputStream(new ByteArrayInputStream(imageInByte));
output = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[8192];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
然而,结果图像失去了颜色。
问题出在byteArray转换部分,我猜。我该如何解决这个问题?
答案 0 :(得分:0)
有两个字节数组转换,一个是在读取文件时进入字节数组缓冲区,另一个是在写入http响应流时。
1) 您可以尝试写入文件以确认是哪种情况。 从我所看到的here,阅读代码似乎没问题。
2) 你是否确定在输出流的情况下你正在写和刷新?
3) 您还可以尝试为内容类型添加http响应标头以帮助浏览器。