проблема с изменением цвета картинки в Java - PullRequest
0 голосов
/ 28 апреля 2018

Мне дали код для вычисления значений R, G и B по значению rgb. Они выглядят так:

public static int getR(int rgb) {
        return (rgb >> 16) & 0xff; 
    }

public static int getG(int rgb) {
    return (rgb >> 8) & 0xff;
}

public static int getB(int rgb) {
    return rgb & 0xff;
}

Теперь я должен сделать следующее упражнение. Я изменяю правильную часть изображения, но все окрашивается в черный цвет.

/**
     * Converts a picture by dividing it in three equal parts along the X axis. 
     * In the first (left) part, only the red component is drawn. In the second 
     * (middle) part, only the green component is drawn. In the third (right) part,
     * only the blue component is drawn.
     * 
     * @param pixels The input pixels.
     * @return The output pixels.
     */
    public static int[][] andyWarhol(int[][] pixels) {
        int i, j;

        //Convert red part:
        for (i = 0; i < pixels.length / 3; i++) {
            for (j = 0; j < pixels[0].length; j++) {
                pixels[i][j] = Colors.getR(pixels[i][j]);
            }
        }

        //Convert yellow part:
        for (i = pixels.length / 3; i < pixels.length * 2 / 3; i++) {
            for (j = 0; j < pixels[0].length; j++) {
                pixels[i][j] = Colors.getG(pixels[i][j]);
            }
        }

        //Convert blue part:
        for (i = pixels.length * 2 / 3; i < pixels.length; i++) {
            for (j = 0; j < pixels[0].length; j++) {
                pixels[i][j] = Colors.getB(pixels[i][j]);
            }
        }
        return pixels;
    }

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

решаемая. Ладно, да, как я и подозревал, мне снова пришлось превратить каждое значение для R, B и G в значение rbg. Имеет смысл

0 голосов
/ 28 апреля 2018

Я подозреваю, что ваша альфа равна 0 (прозрачная). Я не знаю, как это используется, но цвета в Java часто бывают «argb». Попробуйте с (цвет | 0xff_00_00_00)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...