删除PNG BufferedImage中的透明度

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

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

在显示它时,有一个黑色背景,我知道这是由PNG透明度引起的。 我试图解决这个问题是将每个像素的alpha值设置为不等于255,而Color.white 。 这并没有解决问题。

我找到了问题的答案,建议使用BufferedImage.TYPE_INT_RGB ,但是我不确定如何应用上面给出的代码。 任何帮助,将不胜感激。

创建TYPE_INT_RGB类型的第二个BufferedImage

 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(); 

你现在有一个非透明版本的图像……

要保存图像,请查看编写/保存图像