具有不同源颜色空间和图像类型的Java Graphics.drawImage

时间:2012-06-11 20:10:28

标签: java

我正在尝试将大部分透明的PNG覆盖在JPEG上,并将结果输出为JPEG文件。我附上了测试输入。这是代码:(编辑:仅供参考,这是从Scala翻译成Java的,不确定我是否错过了一两个语法错误,但你应该从代码中得到这个想法)

BufferedImage img = new BufferedImage(800, 800, BufferedImage.TYPE_4BYTE_ABGR); //Goes to test.jpg
img.getGraphics.drawImage(source, 0, 0, Color.black, null); //source.jpg
img.getGraphics.drawImage(overlay, 0, 0, 400, 400, Color.black, null); //overlay.png

//First, get the final JPG into memory in a byte array (I use this elsewhere in my actual code)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
byte[] bytes = baos.toByteArray();
baos.close();

FileUtils.writeByteArrayToFile(new File("test.jpg"), bytes);

显然,输出不是我的预期。我在这做错了什么? source.jpg overlay.png test.jpg

0 个答案:

没有答案