删除PNG BufferedImage中的透明度

时间:2014-11-13 21:24:31

标签: java png bufferedimage

我正在使用以下代码阅读PNG图像:

BufferedImage img = ImageIO.read(new URL(url));

显示它时,有一个黑色背景,我知道这是由PNG透明度引起的。

我发现此问题的解决方案建议使用BufferedImage.TYPE_INT_RGB,但我不确定如何将其应用于上面的代码。

1 个答案:

答案 0 :(得分:19)

创建BufferedImage类型的第二个TYPE_INT_RGB ...

BufferedImage copy = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB);

将原件绘制到副本...

Graphics2D g2d = copy.createGraphics();
g2d.setColor(Color.WHITE); // Or what ever fill color you want...
g2d.fillRect(0, 0, copy.getWidth(), copy.getHeight());
g2d.drawImage(img, 0, 0, null);
g2d.dispose();

您现在拥有图片的非透明版本......

要保存图像,请查看Writing/Saving an Image