如何在Java中将getRGB(x,y)整数像素转换为Color(r,g,b,a)?

时间:2010-03-28 19:00:29

标签: java image colors

我有getRGB(x,y)得到的整数像素,但我对如何将其转换为RGBA没有任何线索。例如,-16726016应为Color(0,200,0,255)。有什么提示吗?

2 个答案:

答案 0 :(得分:43)

如果我猜对了,你得到的是0xAARRGGBB形式的无符号整数,所以

int b = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int r = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;

将提取颜色成分。但是,快速查看docs表示您可以执行

Color c = new Color(argb);

Color c = new Color(argb, true);

如果你想在Color中使用alpha组件。

<强>更新

红色和蓝色组件在原始答案中被反转,因此正确的答案将是:

int r = (argb>>16)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>0)&0xFF;

也在第一段代码中更新了

答案 1 :(得分:24)

    Color c = new Color(-16726016, true);
    System.out.println(c.getRed());
    System.out.println(c.getGreen());
    System.out.println(c.getBlue());
    System.out.println(c.getAlpha());

打印出来:

0
200
0
255

这是你的意思吗?