Java更改背景色png图像

Java更改背景色png图像,java,image,graphics,graphics2d,Java,Image,Graphics,Graphics2d,我一直在使用Graphics2D跟踪一些StackOverflow链接,以更改BuffereImage的背景色 我正在从事的项目要求我从给定的url读取png图像;检索到的png图像具有透明背景,我想将其设置为白色 以下是我所拥有的: String u = this.format() ; BufferedImage image = null ; try{ URL url = new URL(u) ; image =

我一直在使用Graphics2D跟踪一些StackOverflow链接,以更改BuffereImage的背景色

我正在从事的项目要求我从给定的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 background = new BufferedImage(image.getWidth(), image.getHeight, BufferedImage.TYPE_INT_RGB);
3-用所需颜色填充
背景
图像

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
现在填充了所需的颜色,并在其顶部绘制了图像。

创建一个新的
buffereImage
,用所需的颜色填充其背景,然后在其顶部绘制图像,我会使用
setColor
fillRect
代替,我个人应该使用drawImage()在背景上绘制图像的方法?