在BufferedImage上绘制填充矩形

问题描述 投票:11回答:4

因此,我正在尝试创建一个可以删除包含敏感信息的调查部分的应用程序。但是我遇到了一些问题。

我想要做的是在BufferedImage上绘制填充的黑色矩形,给定x,y,宽度和所需区域的高度为黑色,然后将该新图像写回我的文件系统。这是我的代码。

        File imageFile = new File("images/template.jpg");
        BufferedImage img = ImageIO.read(imageFile);

        Graphics2D graph = img.createGraphics();
        graph.setColor(Color.BLACK);
        graph.fill(new Rectangle(x, y, width, height));
        graph.dispose();

        ImageIO.write(img, "jpg", new File("images/template.jpg"));

无论出于何种原因,资源中的图像在此代码段之后不会更改。关于我做错了什么的任何想法?

java bufferedimage graphics2d
4个回答
0
投票

这个答案很晚但你保存的是图像,而不是你正在创建的图表。我认为它必须再次成为BufferedImage才能保存


-1
投票

我知道这是一个老问题,但也许它对某人有用,我想你应该使用它

graph.drawImage(x,y,width,height); //First you draw the image
graph.setColor(Color.black); //Then set the color to black
graph.fillRect(img.getX(), img.getY(), img.getWidth(), img.getHeight());// Finally draw a black rectangle on it

顺便说一句,很难找到没有更多代码的解决方案。希望它会有用。


-2
投票

你只需要替换这一行:

Graphics2D graph = img.createGraphics();

有了这个:

Graphics2D graph = img.getGraphics();
© www.soinside.com 2019 - 2024. All rights reserved.