将一个原始的负RGB整数值转换回一个由3个数字组成的RGB值

7
好的,我正在开发一个程序,它接收一张图片,将像素块隔离到一个数组中,然后获取该数组中每个像素的各个rgb值。
当我这样做时,
//first pic of image
//just a test
int pix = myImage.getRGB(0,0)
System.out.println(pix);

它输出了-16106634。
我需要从这个整数值中获取(R,G,B)值。
有公式、算法或方法吗?
2个回答

12

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)构造函数进行简便操作,但会降低性能。


很好。确保你将位移方向复制正确...我第一次打错了,后来在编辑中修正了它。 - WhiteFang34

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接