0

我想更改图像的所有蓝色。我用这个代码来修改它。

int i, j, red, green, blue;
        for(i = 0; i < 64; i++){
            for(j = 0; j < 64; j++){
                Color c = new Color(brImage.getRGB(i, j));
                red = c.getRed();
                green = c.getGreen();
                blue = c.getBlue();
                int rgb = new Color(0, 255, 0).getRGB();
                if(red == 0 && green == 0 && blue == 178){
                    brImage.setRGB(i, j, rgb);
                }
            }
        }

问题是它会改变所有透明区域的颜色,而不仅仅是蓝色区域。我将如何解决这个问题?

4

1 回答 1

0

您需要包括当前像素的 alpha 级别...

int i, j, red, green, blue, alpha;
for(i = 0; i < 64; i++){
    for(j = 0; j < 64; j++){
        Color c = new Color(brImage.getRGB(i, j));
        red = c.getRed();
        green = c.getGreen();
        blue = c.getBlue();
        alpha = c.getAlpha(); // include me...
        int rgb = new Color(0, 255, 0, alpha).getRGB();
        if(red == 0 && green == 0 && blue == 178){
            brImage.setRGB(i, j, rgb);
        }
    }
}
于 2013-05-22T06:15:20.103 回答