BMP数据转换为RGB565

本文博客链接:http://blog.csdn.net/jdh99,作者: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; 
 }
}

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值