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

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


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

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


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

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

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


要将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)
链接地址: http://www.djcxy.com/p/87801.html

上一篇: How to convert 24 bit RGB to 8 bit RGB

下一篇: Converting two bit color to eight bit color