繁体   English   中英

Java更改背景颜色png图像

[英]Java change background color png image

我一直在关注一些使用 Graphics2D 的 StackOverflow 链接来更改 BufferedImage 的背景颜色。

我正在进行的项目要求我从给定的 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现在填充了所需的颜色,并在其上绘制了图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM