我一直在下面使用的Graphics2D改变BufferedImage的背景颜色一些StackOverflow的链接。
我工作的项目要求在我从给定的URL PNG图像读取; 检索到的PNG图像具有透明背景,我想将其设置为白色。
以下是我有:
String u = this.format() ;
BufferedImage image = null ;
try{
URL url = new URL(u) ;
image = ImageIO.read(url) ;
Graphics2D graphics = image.createGraphics() ;
graphics.setBackground(Color.WHITE) ;
graphics.clearRect(0, 0, image.getWidth(), image.getHeight()) ;
ImageIO.write(image, "png", new File(outPath + fileName)) ;
graphics.dispose() ;
}
catch(IOException e){
e.printStackTrace() ;
}
我遇到的问题是,当我查看图像时,图像显示为纯白色盒子。显然我有覆盖在我检索现有的图像的顶部上的白色背景。
我怎样才能保留原始图像,只改变背景?或者先设置背景,然后覆盖检索到的图像?
1 - 载入图片
image = ImageIO.read(url) ;
2-创建一个新的BufferedImage
具有相同的尺寸
BufferedImage background = new BufferedImage(image.getWidth(), image.getHeight, BufferedImage.TYPE_INT_RGB);
3-填充background
具有期望的彩色图像
Graphics2D g2d = background.createGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, background.getWidth(), background.getHeight());
4-原始图像绘制到背景上...
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
background
现在填充有所需的颜色,并具有涂在顶O它的图像。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句