7

好的,所以我正在开发一个程序,该程序接收图像,将像素块隔离到一个数组中,然后获取该数组中每个像素的每个单独的 rgb 值。

当我这样做时

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

它吐出-16106634

我需要从这个 int 值中获取 (R, G, B) 值

有公式,alg,方法吗?

4

2 回答 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)构造函数(以性能为代价)。

于 2011-04-03T00:00:37.053 回答
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();
于 2011-04-03T00:02:49.410 回答