我想知道将 24 位 RGB 颜色(每种颜色 8 位)转换为 8 位颜色(2 位蓝色、3 位绿色、3 位红色)的最佳方法是什么。我想要 C 代码来执行此操作。
问问题
16111 次
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));
于 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 回答