如何使用getRGB获取java中图像的像素值数组

时间:2012-01-13 20:04:50

标签: java pixels

我是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}}。如何为图像的每个像素提供相同的值?我如何获得正确的像素值?

1 个答案:

答案 0 :(得分:3)

由于您没有为BufferedImage提供任何值,因此每个像素默认为alpha = 255,red = 0,green = 0和blue = 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 r 0 g 0 b 0。