Как получить массив значений пикселей для изображения в Java с помощью getRGB - PullRequest
0 голосов
/ 14 января 2012

Я новичок в обработке изображений в Java. На самом деле я пытаюсь сохранить все значения пикселей изображения в массиве rgbArray[], и проблема в том, что я получаю одинаковые значения во всех индексах массива, т.е. во всех индексах массив имеет одинаковое значение. Часть кода приведена ниже:

int[] rgbArray=new int[w*h];     // Array to store the Pixel values
BufferedImage buffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
buffer.getRGB(0, 0, w, h, rgbArray, 0, w );
for(int i=0;i<w*h;i++)
 {
  System.out.println("rgbArray["+i+"] = "+ rgbArray[i]);
 }

Вывод, который я получаю -16777216 для всех индексов в rgbArray. Как можно иметь одинаковое значение для каждого пикселя изображения? И как мне получить правильное значение пикселя ??

1 Ответ

3 голосов
/ 14 января 2012

Поскольку вы не предоставляете никаких значений для BufferedImage, каждый пиксель по умолчанию имеет альфа = 255, красный = 0, зеленый = 0 и синий = 0; Поместите все это в 1 int, и вы получите -16777216. Я получил это от:

int val = buffer.getRGB(5, 23);
int a = (0xff000000 & val) >>> 24;
int r = (0x00ff0000 & val) >> 16;
int g = (0x0000ff00 & val) >> 8;
int b = (0x000000ff & val);
System.out.println("a " + a + " r " + r + " g " + g + " b " + b);

Что дает 255 р 0 г 0 б 0.

...