我在把24位bmp数据的rgb的低位丢掉后,改成rgb16位565格式后,出来的图象严重失真,而ps处理16位就没有这个问题.
想请教下如何通过(误差平分或抖动算法)的方式,从24位转16位图象基本不失真!!(起码没有严重的色块断层)
谢谢了!!!
我一直把24BIT的屏当作16bit来用的,从来没有见过你说的“严重失真”,我认为是你做的有问题。
inline WORD Color565(DWORD R,DWORD G,DWORD B){
R>>=3;
G>>=2;
B>>=3;
return WORD((R<<11)|(G<<5)|B);
}
//-------------------------------------------------------
inline WORD Color565(DWORD Color){
DWORD R=(Color>>16)&0xFF;
DWORD G=(Color>>8)&0xFF;
DWORD B=(Color)&0xFF;
R>>=3;
G>>=2;
B>>=3;
return WORD((R<<11)|(G<<5)|B);
}
这2个函数都可以把24位的RGB转换成16位的565格式,我觉得失真都还在可接受的范围内。毕竟这属于有损压缩。