我正在尝试将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位之间更好的映射
答案 0 :(得分:1)
要将8位[0 - 255]值转换为3位[0,7],0不是问题,但记住255应转换为7,因此公式应为Red3 = Red8 * 7/255。 / p>
将24位颜色转换为8位,
onPause()