Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何将getRGB(x,y)整数像素转换为颜色(r,g,b,a)?_Java_Image_Colors - Fatal编程技术网

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

在Java中如何将getRGB(x,y)整数像素转换为颜色(r,g,b,a)?,java,image,colors,Java,Image,Colors,我有从getRGB(x,y)获得的整数像素,但我不知道如何将其转换为RGBA格式。例如,-16726016应该是颜色(0200,0255)。有什么提示吗?如果我猜对了,你得到的是一个形式为0xAARRGGBB的无符号整数,所以 int b = (argb)&0xFF; int g = (argb>>8)&0xFF; int r = (argb>>16)&0xFF; int a = (argb>>24)&0xFF; 将提取颜色组

我有从
getRGB(x,y)
获得的整数像素,但我不知道如何将其转换为RGBA格式。例如,
-16726016
应该是
颜色(0200,0255)
。有什么提示吗?

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

int b = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int r = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;
将提取颜色组件。然而,快速浏览一下这个页面就可以了

Color c = new Color(argb);

如果您希望alpha组件也出现在颜色中

更新

在原始答案中,红色和蓝色分量是颠倒的,因此正确的答案是:

int r = (argb>>16)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>0)&0xFF;
在第一段代码中也进行了更新

    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

这就是你的意思吗?

@Gevorg:可能是。但在测试代码时,这一点很明显@AKX,除非您使用(0200,0255)!;)根据:位24-31为alpha,位16-23为红色,位8-15为绿色,位0-7为蓝色
0
200
0
255