如何将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