【发布时间】:2011-02-01 19:26:39
【问题描述】:
我有从getRGB(x,y) 获得的整数像素,但我不知道如何将其转换为 RGBA 格式。例如,-16726016 应该是 Color(0,200,0,255)。有什么建议吗?
【问题讨论】:
我有从getRGB(x,y) 获得的整数像素,但我不知道如何将其转换为 RGBA 格式。例如,-16726016 应该是 Color(0,200,0,255)。有什么建议吗?
【问题讨论】:
如果我猜对了,你得到的是一个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;
也在第一段代码中更新
【讨论】:
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
你是这个意思吗?
【讨论】: