24bits转16bits后,画面不丢色,请教!!!答对马上给分

fdsa235236   2007-9-24 15:11 楼主
我在把24位bmp数据的rgb的低位丢掉后,改成rgb16位565格式后,出来的图象严重失真,而ps处理16位就没有这个问题.

想请教下如何通过(误差平分或抖动算法)的方式,从24位转16位图象基本不失真!!(起码没有严重的色块断层)


谢谢了!!!

回复评论 (3)

我一直把24BIT的屏当作16bit来用的,从来没有见过你说的“严重失真”,我认为是你做的有问题。
点赞  2007-9-24 18:49
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格式,我觉得失真都还在可接受的范围内。毕竟这属于有损压缩。
点赞  2007-9-25 00:11
我也是用楼上的方法,感觉也还可以啊~
点赞  2007-9-25 16:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复