#ifndef _FIRE_BMP_H_ #define _FIRE_BMP_H_ #define MAX_BMP_H 240 //BMP 支持最高高度 #define MAX_BMP_W 320 //BMP 支持最高宽度 #define MAX_BMP_BIT 24 //BMP 支持最高位数 /* BMP文件的组成结构 */ //------------------------------------------------------- //位图文件头(bitmap-file header) //------------------------------------------------------- //位图信息头(bitmap-information header) //------------------------------------------------------- //彩色表/调色板(color table) //------------------------------------------------------- //位图数据(bitmap-data) //------------------------------------------------------- typedef enum { BI_RGB, //无压缩 BI_RLE8, //每个象素8比特的RLE压缩编码,压缩格式由2字节组成(重复象素计数和颜色索引); BI_RLE4, //每个象素4比特的RLE压缩编码,压缩格式由2字节组成 BI_BITFIELDS, //每个象素的比特由指定的掩码决定。 }biCompression_e; #if defined(__ICCARM__) #pragma pack(2) #endif typedef struct //必须双字节对齐(或者单字节对齐) { //BMP位图文件头 uint16 bfType; //偏移:0x00,文件标志.'BM',用来识别BMP位图类型 uint32 bfSize; //偏移:0x02,文件大小 uint16 bfReserved1; //偏移:0x06,保留 uint16 bfReserved2; //偏移:0x08,保留 uint32 bfOffBits; //偏移:0x0A,从文件开始到位图数据(bitmap data)开始之间的的偏移量 //BMP位图信息头 uint32 biSize; //偏移:0x0E,位图信息头字节数量。 int32 biWidth; //偏移:0x12,图象宽度 int32 biHeight; //偏移:0x16,图象高度,如果是一个正数,说明图像数据是从图像左下角开始扫描,负数则从左上角 uint16 biPlanes; //偏移:0x1A,为目标设备说明位面数,其值将总是被设为1 uint16 biBitCount; //偏移:0x1C,说明比特数/象素,其值为1、4、8、16、24、或32 uint32 biCompression; //偏移:0x1E,说明图象数据压缩的类型。其值类型为 biCompression_e uint32 biSizeImage; //偏移:0x22,说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0 uint32 biXPelsPerMeter;//偏移:0x26,说明水平分辨率,用象素/米表示,有符号整数 uint32 biYPelsPerMeter;//偏移:0x2A,说明垂直分辨率,用象素/米表示,有符号整数 uint32 biClrUsed; //偏移:0x2E,说明位图实际使用的彩色表中的颜色索引数 uint32 biClrImportant; //偏移:0x32,说明对图象显示有重要影响的颜色索引的数目,如果是0,表示都重要。 }BMP_FILEHEADER; #if defined(__ICCARM__) #pragma pack() #endif //调色板 的颜色结构 typedef struct tagRGBQUAD { uint8 rgbBlue; uint8 rgbGreen; uint8 rgbRed; uint8 rgbReserved; } RGBQUAD; int8 SD2LCD_BMP(char *file,Site_t site); //从SD卡获取bmp文件,并显示 (目前支持 BMP 图像的 24位真彩色/RGB555/单色) #endif //_FIRE_BMP_H_