6

我想知道将 24 位 RGB 颜色(每种颜色 8 位)转换为 8 位颜色(2 位蓝色、3 位绿色、3 位红色)的最佳方法是什么。我想要 C 代码来执行此操作。

4

3 回答 3

7

8 位 RGB 通常是索引(调色)颜色格式,请参阅调色板(计算)

不过,按照您描述的方式,从 24 bpp 中获得 8 bpp 非常简单 - 您需要去除最低有效位并将这些位合并为每个像素的单字节值。AFAIK 它不是标准或众所周知的像素颜色表示。

于 2011-10-05T06:59:26.440 回答
2

不是在 C 中,而是在 javascript 中。

encodedData = (Math.floor((red / 32)) << 5) + (Math.floor((green / 32)) << 2) + Math.floor((blue / 64));

https://stackoverflow.com/a/25258278/2130509

于 2014-08-12T07:18:28.663 回答
0

要将 8bit [0 - 255] 值转换为 3bit [0, 7],0 没有问题,但记住 255 应该转换为 7,所以公式应该是 Red3 = Red8 * 7 / 255。

要将 24 位颜色转换为 8 位 (RRRGGGBB),

8bit Color = (Red * 7 / 255) << 5 + (Green * 7 / 255) << 2 + (Blue * 3 / 255)
于 2016-06-17T05:56:20.577 回答