从ushort转换为RGB值

时间:2014-05-07 18:30:56

标签: math colors rgb bits

我试图读取一个图像文件,其颜色以下列方式存储:

Hex      RGB
00 00 -> 0/0/0
01 00 -> 0/0/8
02 00 -> 0/0/16
...
20 00 -> 0/8/0
21 00 -> 0/8/8
22 00 -> 0/8/16

如您所见,如果当前频道的值为256或更大,它会增加之前的频道。

我对世界似乎无法找出一种简单的算法来计算合适的颜色。如果有人能为我鞭打我,我会非常感激!

更新

 0x00 -> 0x1F == 0x20 -> 0x3F == 0/0/0 -> 0/0/248
 0x40 -> 0x5F == 0x60 -> 0x7F == 0/8/0 -> 0/8/248

我只是注意到后续的32个范围会产生相同的颜色结果...这不是一些有效的RGB编码,如果你问我,它更像是一种保护。

另一个更新: 我最终制作了一个色彩图,我可以用它来查找特定数字的正确颜色,你可以看到它是一个非常奇怪的地图。如果有人能够找出算法来获得这张地图中指定的颜色,我将非常感激,因为我对它的工作方式非常好奇。

enter image description here

2 个答案:

答案 0 :(得分:0)

在我看来,好像他们已经完成了5-5-5或5-6-5位编码,以最大化16位内的颜色能力。这意味着让我们说5-6-5比特编码看起来如下所示。

---------------------------------------------------------------------------------
| 15 | 14 | 13 | 12 | 11 | 10 |  9 |  8 |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 |
---------------------------------------------------------------------------------
|          red           |            green            |          blue          |
---------------------------------------------------------------------------------

但是在你的情况下,它看起来好像是交换了字节顺序,这意味着你根据你给出的顺序实际看起来如下(在显示时按字节排序的字节):

|               byte 0                  |                 byte 1                |
---------------------------------------------------------------------------------
| 15 | 14 | 13 | 12 | 11 | 10 |  9 |  8 |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 |
---------------------------------------------------------------------------------
|  low green   |          blue          |          red           |   hi green   |
---------------------------------------------------------------------------------

答案 1 :(得分:0)

免责声明:为了完成,这是我原始问题更新的重新发布。

我最终制作了一个色彩图,我可以用它来查找特定数字的正确颜色,你可以看到它是一个非常奇怪的地图。如果有人能够找出算法来获得这张地图中指定的颜色,我会非常感激,因为我真的很好奇它是如何工作的。

Lookup colormap