Как установить пользовательские значения RGB при просмотре изображения в Java - PullRequest
0 голосов
/ 10 июня 2018

Я перебираю изображение с координатами X и Y.Однако я могу установить значение sRGB только с помощью метода: image.setRGB (int x, int y, int rgb);

Я хочу установить пользовательские значения RED, GREEN и BLUE для текущего X иКоординаты YНовые значения RGB в этом случае являются средними значениями исходных значений RGB.

В результате я получаю синее изображение вместо оттенков серого.

for (int y = 0; y < imageInput.getHeight(); y++) {
        for (int x = 0; x < imageInput.getWidth(); x++) {
            int clr = imageInput.getRGB(x, y);
            Color color = new Color(clr);
            int red = color.getRed();
            int green = color.getGreen();
            int blue = color.getBlue();

            int sumRGB = red + green + blue;
            int avg = sumRGB/3;
            System.out.println("sRGB: " + clr);
            System.out.println("Input Image: x= " + x + " y= " + y + " [" + red + "," + green + "," + blue + "]");
            System.out.println("Avg RGB: " + avg);

            imageCopy.setRGB(x, y, avg);
            int clrCopy = imageCopy.getRGB(x, y);
            color = new Color(clrCopy);

            red = color.getRed();
            green = color.getGreen();
            blue = color.getBlue();
            System.out.println("Output Image: x= " + x + " y= " + y + " [" + red + "," + green + "," + blue + "]\n");
        }
    }

1 Ответ

0 голосов
/ 10 июня 2018

Вы можете написать

Color greyScaleColor = new Color(avg, avg, avg);
int rgbValueForGrey = greyScaleColor.getRGB();

Это даст вам значение int, которое вам нужно установить в imageCopy.

...