lameck - 2008-4-3 21:56:00
bmp文件格式详谈.pdf

附件:
您所在的用户组无法下载或查看附件gif and bmp相关

附件:
您所在的用户组无法下载或查看附件
woodstar123 - 2008-4-8 13:58:00
:handshake
maomao2126 - 2008-5-22 12:52:00
:D :D
leajian - 2008-5-27 9:14:00
贴一段BMP解码的头文件里的内容吧,这个就是BMP文件的格式:
// constants for BitPerPixel of struct FILE_HEADER
#define BP_SINGLE 1
#define BP_16COLOR 4
#define BP_256COLOR 8
#define BP_16BITCOLOR 16
#define BP_24BITCOLOR 24
#define BP_32BITCOLOR 32
// constants for CompresType of struct FILE_HEADER
#define BI_RGB 0
#define BI_RLE8 1
#define BI_RLE4 2
#define BI_BITFIELDS 3
typedef struct {
UINT8 B;// : 8;
UINT8 G;// : 8;
UINT8 R;// : 8;
UINT8 Filled;// : 8;
}RGBQUAD;
typedef struct {
RGBQUAD ColorTable[256];
UINT32 CTOffset;
UINT32 CTSize;
}COLORTABLE;
typedef struct {
UINT16 DUMP; // offset:-2,保证按4字节对齐
UINT16 Type; // offset:0x00 文件标识, 一般是0x4d42, 也就是"BM"
UINT32 FileSize; // offset:0x02 整个文件的大小
UINT32 Reserved; // offset:0x06 保留 must be 0
UINT32 Offset; // offset:0x0a 位图数据的偏移量
}FILE_HEADER;
typedef struct {
UINT32 HeadSize; // offset:0x0e 位图信息头的长度, windows系统一般为0x28
UINT32 Width; // offset:0x12 位图宽度
UINT32 Height; // offset:0x16 位图高度
UINT16 Planes; // offset:0x1a 位图的柱面数(该值将总是1)
UINT16 BitPerPixel; // offset:0x1c 每个象素的位数(1-单色位图; 4-16色位图; 8-256色位图; 16-16bit高彩色位图; 24-24bit真彩色位图; 32-32bit增强型真彩色位图)
UINT32 CompresType; // offset:0x1e 压缩方式(0-不压缩; 1-使用8位RLE压缩; 2-使用4位RLE压缩; 3-位域存放方式)
UINT32 DataSize; // offset:0x22 用字节数表示的位图数据大小, 必须为4的倍数
UINT32 HResolution; // offset:0x26 用象素/米表示的水平分辨率
UINT32 VResolution; // offset:0x2a 用象素/米表示的垂直分辨率
UINT32 Colors; // offset:0x2e 位图使用的颜色数. 如8bit/象素表示为100H或者256
UINT32 ImportColor; // offset:0x32 指定重要的颜色数. 当该域的值等于颜色数(或者等于0)时,表示所有颜色都一样重要
COLORTABLE ColorTable; // 调色板规范
}INFO_HEADER;
typedef struct {
FILE_HEADER FileHead;// 文件信息头
INFO_HEADER InfoHead;// 图象信息头
UINT8 *Data; // 图象数据
} BITMAP_FILE;
leajian - 2008-5-27 9:14:00
在 TFT 驱动里有BMP的解码程序,感兴趣的可以拿去研究哦 :-)