【发布时间】:2014-08-13 08:38:50
【问题描述】:
我有一个名为 Graphic 的类,它创建一个新的 BufferedImage,绘制一个新的 Graphics2D 并将这个图像作为 base64 编码的字符串返回:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// Draw background
g2.setColor(Color.decode("#FFFFFF"));
g2.fillRect(0, 0, grafikBreite, grafikHoehe);
g2.setColor(Color.decode("#000000"));
// Draw some rectangles and other stuff...
drawStuff(g2);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] imageInByte = {};
try {
JPEGImageEncoder j = new JPEGImageEncoderImpl(baos);
j.encode(image);
imageInByte = baos.toByteArray();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
return javax.xml.bind.DatatypeConverter.printBase64Binary(imageInByte);
在我的 jsp 文件中,我想使用来显示此图像,其中图形是先前创建的 base64 字节数组:
<img src="data:image/jpg;base64,<c:out value="${graphic}"/>"/>
图片显示出来了,但是问题是图片背景是红色的,其他颜色也有问题。如果我将创建的base64字符串保存为硬盘上的jpeg-File,所有颜色都正确显示。
有人知道为什么 HTML 会以奇怪的颜色显示图像吗?
感谢您的帮助
【问题讨论】:
标签: java image jsp base64 bufferedimage