首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -十进制颜色到RGB颜色

Java -十进制颜色到RGB颜色
EN

Stack Overflow用户
提问于 2014-01-19 21:31:04
回答 5查看 13.7K关注 0票数 5

我有一个十进制(不是十六进制)颜色代码,使用Java,我需要将它转换成三种RGB颜色。

例如,16777215 (纯白色)需要转换为红色: 255绿色: 255蓝色: 255。

65280 (纯绿色)需要转换为红色:0绿色255:蓝色:0

这里是更多示例的转换器。

我只是做了一些小的计算,并在上面链接的页面上玩计算器,我已经确定:

  • 红色等于65536 (256^2)
    • (255x65536 = 16711680,亦称纯红色)

  • 绿色等于256 (256^1)
    • (255x256 = 65280,又名纯绿色)

  • 蓝色等于1 (256^0)
    • (255 x1= 255,亦称纯蓝色)

我可以看出,这显然与字节有关,但我错过了最后一点。对于位/字节/等的整个概念以及它与Java的交互方式,我不是最好的,所以它可能相当简单。

所以,有人知道最好的方法吗?使用java将单个数字十进制颜色转换为三个单独的RGB值的最佳方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-19 21:33:58

你可以

代码语言:javascript
复制
Color color = new Color(16777215);
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();
票数 7
EN

Stack Overflow用户

发布于 2014-01-19 21:36:26

您说得对: RGB值在int中被编码为字节。R是字节2,G是字节1,B是字节0,加到24位的颜色深度。这可能是一种可能的表示法,这取决于恩典。

代码语言:javascript
复制
00000000 00000000 00000000 00000000  <-- 32bit int
         ^             ^      ^
         |             |      |
         +--red here   |      +--green here
              8bit     |            8bit
                       |
                       +--blue here
                             8bit

您可以通过一些位移位和掩蔽提取RGB值:

代码语言:javascript
复制
int red = (color >> 16) & 0xff;
int green = (color >> 8) & 0xff;
int blue = color & 0xff;
票数 16
EN

Stack Overflow用户

发布于 2014-01-19 21:37:52

您可以通过简单的按位操作获得通道。

代码语言:javascript
复制
int r = (color >> 16) & 0xff;
int g = (color >> 8)  & 0xff;
int b = color & 0xff;

从那里,它应该是很容易做任何你想要的颜色信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21222935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档