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;
}
}
http://blog.csdn.net/jdh99/article/details/5360225