2011-04-02 126 views
5

好吧,我正在研究一个程序,它接受一个图像,将一个像素块分隔成一个数组,然后为每个像素获取每个单独的rgb值该阵列中的像素。将原始负rgb整数值转换回3号rgb值

当我为此

//first pic of image 
//just a test 
int pix = myImage.getRGB(0,0) 
System.out.println(pix); 

它吐出-16106634

我需要得到(R,G,B)值超出这个int值

的是否有式,alg,方法?

回答

11

BufferedImage.getRGB(int x, int y)方法总是返回TYPE_INT_ARGB颜色模型中的像素。所以,你只需要正确的位隔断每个颜色,就像这样:

int pix = myImage.getRGB(0, 0); 
int r = (pix >> 16) & 0xFF; 
int g = (pix >> 8) & 0xFF; 
int b = pix & 0xFF; 

如果你刚好想alpha分量:

int a = (pix >> 24) & 0xFF; 

或者你可以用Color(int rgba, boolean hasalpha)构造为方便(在性能成本)。

+0

谢谢!它工作完美 – 2011-04-03 00:06:26

+0

酷。确保您将正确位置复制到正确的位置......我第一次犯了一个错字,并在修改中进行修复。 – WhiteFang34 2011-04-03 00:14:22

2
int pix = myImage.getRGB(0,0); 
Color c = new Color(pix,true); // true for hasalpha 
int red = c.getRed(); 
int green = c.getGreen(); 
int blue = c.getBlue();