删除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();
你现在有一个非透明版本的图像……
要保存图像,请查看编写/保存图像