本文博客链接: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; } }
|