16位bmp文件中RGB555转RGB565算法

Posted 杂草园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16位bmp文件中RGB555转RGB565算法相关的知识,希望对你有一定的参考价值。

     做tft彩屏显示图片的时候,显示16位位图,显示屏的显示模式为RGB565。使用img2lcd转换后的16位bmp,显示出来后,颜色有偏差;转换为565格式的bin文件,显示完全正常,可以确定转换为bmp后,格式为RGB555。网上查找相关资料显示,Windows 图片查看器显示正常的图片,均为RGB555格式,系统自带画图画图工具保存时,不支持将文件保存为16位位图格式。

  以下为555转565的程序片段,转换后的结果和使用img2lcd软件保存为565格式的结果完全相同。转换的结果其实就是将原来5位G扩展为6位。即左移1为,然后右边补0。这样转换后,和img2lcd软件转换的结果对比,发现有一部分数据不一致。原来移位后,img2lcd软件在右边不是全都补0,而是看原来G中的最后1位若为1,则补1,若为0,则补0,程序中最后加入一句判断,这样转换后,就完全一致了。

char c1=0x6b,c2=0x7b;              // 0rrr rrgg(c1) gggb bbbb(c2)         RGB555   
char c3,c4;                       
c3= c1<<1;
c3|= c2>>7;

c4 = c2<<1;
c4&= 0xc0;
c4|= c2&0x1f;
if(c2&0x20) c4+=0x20;

uint16_t color = (c3<<8) | c4;    // rrrr rggg(c3) gggb bbbb(c4)          RGB565

以上是关于16位bmp文件中RGB555转RGB565算法的主要内容,如果未能解决你的问题,请参考以下文章

怎么把android framebuffer输出格式改为rgb565

bmp文件格式中rgb555与rgb888之间的转换,24位与16位位图的转换

RGB565 怎么转 RGB888

android rgb888和argb565有啥区别

2021-08-16 灰度图rgb<>yuv

RGB格式详解---RGB像素格式