我有一个十进制(不是十六进制)颜色代码,使用Java,我需要将它转换成三种RGB颜色。
例如,16777215 (纯白色)需要转换为红色: 255绿色: 255蓝色: 255。
65280 (纯绿色)需要转换为红色:0绿色255:蓝色:0
这里是更多示例的转换器。
我只是做了一些小的计算,并在上面链接的页面上玩计算器,我已经确定:
我可以看出,这显然与字节有关,但我错过了最后一点。对于位/字节/等的整个概念以及它与Java的交互方式,我不是最好的,所以它可能相当简单。
所以,有人知道最好的方法吗?使用java将单个数字十进制颜色转换为三个单独的RGB值的最佳方法是什么?
发布于 2014-01-19 21:33:58
你可以
Color color = new Color(16777215);
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();发布于 2014-01-19 21:36:26
您说得对: RGB值在int中被编码为字节。R是字节2,G是字节1,B是字节0,加到24位的颜色深度。这可能是一种可能的表示法,这取决于恩典。
00000000 00000000 00000000 00000000 <-- 32bit int
^ ^ ^
| | |
+--red here | +--green here
8bit | 8bit
|
+--blue here
8bit您可以通过一些位移位和掩蔽提取RGB值:
int red = (color >> 16) & 0xff;
int green = (color >> 8) & 0xff;
int blue = color & 0xff;发布于 2014-01-19 21:37:52
您可以通过简单的按位操作获得通道。
int r = (color >> 16) & 0xff;
int g = (color >> 8) & 0xff;
int b = color & 0xff;从那里,它应该是很容易做任何你想要的颜色信息。
https://stackoverflow.com/questions/21222935
复制相似问题