我想知道将24位RGB颜色(每种颜色8位)转换为8位颜色(2位蓝色,3位绿色,3位红色)的最佳方法是什么。我想要这样做的C代码。
答案 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));
答案 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)