Как изменить цвета буферизованного изображения Java

У меня есть 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 ответ

Вы используете полностью прозрачное значение красного. Первая запись в определении цвета - это альфа-значение. Если вы хотите полностью непрозрачный цвет, вы должны использовать ff в качестве первого значения. Поэтому ваш красный должен быть 0xffff0000, ваш зеленый 0xff00ff00 и так далее. Это также означает, что черный - это ff000000.

Другие вопросы по тегам