好吧,我正在研究一个程序,它接受一个图像,将一个像素块分隔成一个数组,然后为每个像素获取每个单独的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,方法?
好吧,我正在研究一个程序,它接受一个图像,将一个像素块分隔成一个数组,然后为每个像素获取每个单独的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,方法?
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)
构造为方便(在性能成本)。
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();
谢谢!它工作完美 – 2011-04-03 00:06:26
酷。确保您将正确位置复制到正确的位置......我第一次犯了一个错字,并在修改中进行修复。 – WhiteFang34 2011-04-03 00:14:22