2011-10-05 358 views
3

我想知道什么是将24位RGB颜色(每种颜色8位)转换为8位颜色(2位蓝色,3绿色,3红色)。我想要C代码来做到这一点。如何将24位RGB转换为8位RGB

+0

请添加有关编程语言和/或色彩表现细节。 –

+0

对不起,我完全忘了 – Gootik

回答

6

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

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

+0

你确定应该舍弃不太重要的字节而不是近似吗? –

+2

有些选项,例如抖动。理解和实现最简单的方法是丢弃比特并减少细节,以适应固定数量的比特。在此之上的改变是增加更多的噪音,但留下更好的主观质量。无论如何,我敢打赌,如果OP向后退一步澄清问题,就会出现索引颜色格式。 –

0

要转换的8位[0 - 255]值变换为3位[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)