如何将24位RGB转换为8位RGB

时间:2011-10-05 06:55:26

标签: c colors rgb 8-bit 24-bit

我想知道将24位RGB颜色(每种颜色8位)转换为8位颜色(2位蓝色,3位绿色,3位红色)的最佳方法是什么。我想要这样做的C代码。

3 个答案:

答案 0 :(得分:7)

8位RGB通常是索引(调色)颜色格式,请参阅Palette (computing)

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

答案 1 :(得分:1)

不在C中但在javascript中。

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

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

答案 2 :(得分:0)

要将8位[0 - 255]值转换为3位[0,7],0不是问题,但记住255应转换为7,因此公式应为Red3 = Red8 * 7/255。 / p>

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

8bit Color = (Red * 7 / 255) << 5 + (Green * 7 / 255) << 2 + (Blue * 3 / 255)