【问题标题】:Converting from ushort to RGB values从 ushort 转换为 RGB 值
【发布时间】:2014-05-07 18:30:55
【问题描述】:

我正在尝试读取以下列方式存储颜色的图像文件:

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 编码,如果你问我,它更像是一种保护。

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

【问题讨论】:

  • 我个人没有看到足够的信息来解决这个难题!
  • 嗯,这是我拥有的所有信息,当我读取十进制 32(十六进制的 0x20)时,它必须生成一个向量,其中 XYZ 分别设置为 0/8/0)。 33 会变成 0/8/8, 34 会变成 0/8/16,然后当我达到 64 时,Z 通道溢出,并且会以 8 递增 Y,并在 Z 中再次从 0 开始计数(直到 Y 本身溢出,这然后将 X 增加 8)

标签: math colors rgb bits


【解决方案1】:

在我看来,他们好像已经完成了 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   |
---------------------------------------------------------------------------------

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2016-01-11
      • 2012-10-29
      • 2011-01-24
      • 2013-05-10
      相关资源
      最近更新 更多