如何更改Java缓冲图像的颜色

时间:2014-11-23 15:34:12

标签: java java-2d

我有一个JavaBufferedImage。前景是黑色,背景是透明的。我想将图像重新着色为红色。

我已经阅读了其他人的帖子并尝试使用此代码,但是当我运行时,我的图像完全透明。

有没有人有任何想法?我是Java 2D图像处理库的新手。感谢。

    imageIcon= new ImageIcon(getImageURL("/ImagesGun/GunBase.png"));
    gunBaseImage= Utilities.toBufferedImage(imageIcon.getImage());

    int red = 0x00ff0000;
    int green = 0x0000ff00;
    int blue = 0x000000ff;

    int width = gunBaseImage.getWidth();
    int height = gunBaseImage.getHeight();

    //Loop through the image and set the color to red
    for(int x = 0; x < width; x++){
        for(int y = 0; y < height; y++){
            long pixel = gunBaseImage.getRGB(x, y);
            if(pixel != 0){
                red = 0x00ff0000;

                gunBaseImage.setRGB(x,y,red);
            }

        }
    }

1 个答案:

答案 0 :(得分:3)

您正在使用完全透明的红色值。颜色定义中的第一个条目是alpha值。如果你想要一个完全不透明的颜色,你需要使用ff作为第一个值。因此,您的红色应为0xffff0000,绿色为0xff00ff00,依此类推。这也意味着黑色是ff000000。