java - BufferedImage 有两种类似的方法,一种有效,一种无效。为什么?

标签 java bufferedimage

我尝试过使 BufferedImage 的一种颜色变为不可见的方法。
我自己找不到解决方案,所以我请求您的帮助。
这是我自己制定的方法:

public static BufferedImage makeWithoutColor(BufferedImage img, Color col)
{
    BufferedImage img1 = img;
    BufferedImage img2 = new BufferedImage(img1.getWidth(), img1.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = img2.createGraphics();
    g.setComposite(AlphaComposite.Src);
    g.drawImage(img1, null, 0, 0);
    g.dispose();
    for(int i = 0; i < img2.getWidth(); i++)
    {
        for(int j = 0; i < img2.getHeight(); i++)
        {
            if(img2.getRGB(i, j) == col.getRGB())
            {
                img2.setRGB(i, j, 0x8F1C1C);
            }
        }
    }
    return img2;
}

这是我读过的教程中的一个。

public static BufferedImage makeColorTransparent(BufferedImage ref, Color color) {
    BufferedImage image = ref;
    BufferedImage dimg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = dimg.createGraphics();
    g.setComposite(AlphaComposite.Src);
    g.drawImage(image, null, 0, 0);
    g.dispose();
    for(int i = 0; i < dimg.getHeight(); i++) {
        for(int j = 0; j < dimg.getWidth(); j++) {
            if(dimg.getRGB(j, i) == color.getRGB()) {
            dimg.setRGB(j, i, 0x8F1C1C);
            }
        }
    }
    return dimg;
}

最佳答案

你的错误是这一行:

for(int j = 0; i < img2.getHeight(); i++)

应该是:

for(int j = 0; j < img2.getHeight(); j++)
//             ^                     ^ as Ted mentioned...

关于java - BufferedImage 有两种类似的方法,一种有效,一种无效。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266658/

相关文章:

java - scala.collections.javaconverters._ 错误 : value map is not a member of java. util.Set

java - 如何在java中的csv文件中将新记录放入新行

java - BufferedImage,转换为字节数组并返回后相同的图像,但灰度转换后不同

java - 调整图像大小以适合框架

java - 如何禁用 java.awt.Graphics.fillRect(int x, int y, int width, int height) 的效果?

java - 像素重新定位,并排显示

java - Maven:资源二进制文件在构建后更改文件大小

java - Java 中的 volatile 类实例和成员访问

java - 错误 init SpringBoot v.2.1.10.RELEASE app 构造函数参数 0

java - 将 List<BufferedImage> 转换为图像