博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BMP数据转换为RGB565
阅读量:3948 次
发布时间:2019-05-24

本文共 1019 字,大约阅读时间需要 3 分钟。

               

本文博客链接:,作者:jdh,转载请注明.

作者:JDH

2010-03-09

 

TFT屏的显示缓存能直接显示RGB565的数据,所以BMP要转换成RGB565.

24位BMP结构包括文件头,信息头,位图数据。首先读取文件头,信息头,然后读取位图数据。假设读取的是320 × 240大小的24位位图数据,转换成的RGB565的数据保存在数组

U16 BUFFER_BMP[320 * 240]中。读取的三位色彩量RED,BLUE,GREEN。

代码:

*BUFFER_BMP = 0X0000;

*BUFFER_BMP |= RED << 8;

*BUFFER_BMP |= GREEN << 3;
*BUFFER_BMP |= BLUE >> 3;
BUFFER_BMP++;

 

同理RGB565数据也可以转换为BMP格式

代码:

/*

功能:RGB565转换为BMP
说明:只能转换320*240大小图片,转化为24位图
作者:JDH
*/

void RGB565_TO_BMP(U16 RGB565[240][320],U8 *BMP)

{
 //BMP信息头
 U8 HEADER[] =
 {
  66,77,54,132,3,0,0,0,0,0,54,0,0,0,40,0,
  0,0,64,1,0,0,240,0,0,0,1,0,24,0,0,0,
  0,0,0,132,3,0,35,46,0,0,35,46,0,0,0,0,
  0,0,0,0,0,0
 };
 U32 i = 0;
 U8 RED,BLUE,GREEN;
 U16 COLOR;
 
 //BMP信息头定义
 for (i = 0;i < 0X36;i++)
 {
  *BMP++ = *(HEADER + i);
 }
 
 //色彩写入
 for (i = 0;i < 76800;i++)
 {
  COLOR = *(*(RGB565 + i / 320) + i % 320);
  RED = ((COLOR >> 8)) & 0xF8 + 3;
  BLUE = ((COLOR >> 3) & 0xFC) + 1;
  GREEN = ((COLOR << 3) & 0xF8) + 3;
  *BMP++ = BLUE;
  *BMP++ = GREEN;
  *BMP++ = RED; 
 }
}

 

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!

你可能感兴趣的文章
领导转型:六个方式帮助你建立好的团队
查看>>
从员工到总监,你要明白的8个道理
查看>>
领导不可不知的十大管理定律
查看>>
如何分析Email模块接收、发送邮件失败的Log
查看>>
GPS如何进入省电模式
查看>>
GPS打开失败
查看>>
如何增加电量显示格数,并提示剩余电量?
查看>>
Key Launcher上底下的shortcut如何修改默认值以及如果修改Key Launcher上widget的默认显示顺序
查看>>
Java支持播放哪些multi media格式
查看>>
Audio播放完毕后设置时间无法正确获取
查看>>
打开了一个size不为零的文件,读取到的值却为零的一种分析和解决方法
查看>>
Aplix VM安装Java应用在main menu上不能显示自己的图标,而是显示一朵小花的解决方法
查看>>
Aplix VM安装第一个Java应用在main menu上看不到图标的解决方法
查看>>
java 在cosmos下修改设置,提示“setting are not modifiable”的解释
查看>>
JAD中常见字段的介绍。
查看>>
对于SIM menu update by OTA的解释
查看>>
如何去掉OTA provisioning的PIN码验证
查看>>
如何实现首次开机自动power on 蓝牙?
查看>>
Makefile文件中蓝牙相关的宏介绍
查看>>
如何屏蔽掉乱码的push消息
查看>>