Назначить значения RGB в Java с вложенным для функции

У меня есть вопрос, вот мой код:

int W = img.getWidth();
int H = img.getHeight();
int [][] pixels = new int [W][H];
int [][][] rgb = new int [3][H][W];
for(int i=0;i<W;i++)
    for(int j=0;j<H;j++){
        pixels[i][j] = img.getRGB(i,j);
        Color clr = new Color(pixels[i][j]);
        rgb[0][j][i] = clr.getRed();
        rgb[1][j][i] = clr.getGreen();
        rgb[2][j][i] = clr.getBlue();
    }

/*
 pixels changing process 
 */

//1st for
for(int[] asd : rgb[0])
    System.out.println(Arrays.toString(asd));

//2nd for
for(int i=0;i<W;i++)
    for(int j=0;j<H;j++){
        /*Color myColor = new Color (rgb[0][i][j],rgb[1][i][j],rgb[2][i][j]);
        int newrgb = myColor.getRGB();
        img.setRGB(W,H,newrgb);*/
    }
}

печать красных значений с помощью 1st работает нормально, но почему я не могу поместить эти значения с помощью 2nd для?

когда я запускаю код, он выдает строку ByteInterleavedRaster.setDataElements(int, int, Object): недоступно

Я хочу назначить цвета изображения с новыми значениями rgb[0] (красный), rgb[1] (зеленый), rgb[2] (синий), которые печатаются с использованием 1st для. Когда я ожидал, что это может работать со 2-м для, это выдало ошибку.

заранее спасибо:)

2 ответа

Решение

Вы должны изменить эту строку img.setRGB(W,H,newrgb) к этому img.setRGB(j,i,newrgb),

Я думаю, что это выглядит правильно

int W = img.getWidth();
int H = img.getHeight();
int [][]   pixels = new int [W][H];
int [][][] rgb    = new int [3][W][H];

for(int i=0; i<W; i++)
    for(int j=0; j<H; j++) {

        pixels[i][j] = img.getRGB(i,j);
        Color clr = new Color(pixels[i][j]);

        rgb[0][i][j] = clr.getRed();
        rgb[1][i][j] = clr.getGreen();
        rgb[2][i][j] = clr.getBlue();
    }

/*
 pixels changing process 
 */

for(int i=0; i<W; i++)
    for(int j=0; j<H; j++){

        Color myColor = new Color (rgb[0][i][j],
                                   rgb[1][i][j],
                                   rgb[2][i][j]);
        int newrgb = myColor.getRGB();

        img.setRGB(i, j, newrgb);
    }
}
Другие вопросы по тегам