2012-01-13 7 views
0

java에서 이미지 처리를 처음 사용합니다. 사실 내가 뭘 하려는지 배열 rgbArray[]에 이미지의 모든 픽셀 값을 저장하는 것입니다, 그리고 문제는 제가 배열의 모든 인덱스 즉, 모든 인덱스에 동일한 값을 가지고있어 같은 가치.getRGB를 사용하여 Java에서 이미지의 픽셀 값 배열을 얻는 방법

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]); 
} 

내가 rgbArray의 모든 인덱스에 대한 -16777216입니다 얻고 출력을 : 코드의 일부는 아래에 주어진다. 이미지의 각 픽셀마다 동일한 값을 갖는 것이 어떻게 가능합니까? 그리고 올바른 픽셀 값을 얻으려면 어떻게해야합니까 ??

+3

당신이 버퍼 이미지에 이미지를 넣어 어디 어디에서나 볼 수 없습니다. 그렇게 만들어진, 그것은 완전히 비어 있으므로 값은 모두 동일합니다. – Grooveek

+0

도움을위한 Thax하지만 버퍼링 된 이미지에 이미지를 넣는 방법과 코드의 일부분이 누락 된 방법을 안내해 주시겠습니까 ?? – Arizvi

+0

Thax I got it .. 버퍼링 된 이미지에 가치를 부여하지 않았습니다 ... thax alot .. :) Bt는 이미지 처리 소프트웨어에서 wrking하는 데 도움이 될 것입니다.) – Arizvi

답변

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 0g 0 B 0

+0

Thax for the help .. 그리고 네가 맞습니다. 위에서 썼던 값과 같은 값을 얻었습니다 .. 코드의 일부분이 누락 된 버퍼 된 이미지에 이미지를 넣는 방법을 안내해 주시겠습니까 ?? – Arizvi

+0

Thax I got it .. 버퍼링 된 이미지에 가치를 부여하지 않았습니다 ... thax alot .. :) Bt는 이미지 처리 소프트웨어에서 wrking하는 중 일부 도움이 필요합니다.) – Arizvi

관련 문제