在24位RGB和8位颜色之间转换

时间:2016-03-01 21:14:36

标签: colors converter rgb dithering

我正在尝试将24位(8R,8G,8B)转换为8位(RRRGGGBB)颜色

我理解缩小颜色字节并将它们加在一起(移位后)的基本概念。即给定RGB(255,254,253)我会采用255/32 * 32 + 254/32 * 4 + 253/64,这将给我111,111,11b(白色)。

这对于有大量红色和绿色的图片非常有效但是一旦蓝色开始出现,事情就会真正被抛弃。布鲁斯开始看起来比以前更绿松石或紫色。

我不是想做抖动,而是想在RGB和8bit之间找到更好的映射。

我考虑过将RGB转换为HSV然后转换为8位,但我不确定如何从HSV转换为8位,H字节与RRRGGGBB不对应。即使它确实如此,我也无法获得黑白两色。有没有办法加权H,S,V字节(就像我用RGB做的那样)来得到我想要的东西?或者我应该坚持找到RGB直线到8位之间更好的映射

1 个答案:

答案 0 :(得分:1)

要将8位[0 - 255]值转换为3位[0,7],0不是问题,但记住255应转换为7,因此公式应为Red3 = Red8 * 7/255。 / p>

将24位颜色转换为8位,

onPause()