1. *.bmp文件结构
*.bmp文件和大多数图形文件一样,分为文件描述区(头文件信息)和图象存储区(象素数据)两部分。而头文件信息中又包含了信息区和调色板区两部分,信息区又可以细分为文件信息区和图象信息区两部分。
这里以256色320*200的bmp图象为例。头文件描述区的偏移长度是1078个字节,也就是说图象存储区是从文件偏移1078后开始读取的。在头文件描述区中头信息区的偏移长度是54个字节,也就是说调色板数据区是从54-1078之间的1024字节。在头信息区中文件信息区占14个字节而图象信息区占40字节。
(1) 文件信息区
typedef struct BMP_file
{
unsigned int bfType; //文件类型
unsigned long bfSize; //bmp文件长度
unsigned int Reserved1;
unsigned int Reserved2;
unsigned long bfOffset; //文件描述区长度,16色为118,256色为1078
}bitmapfile;
现在算一下,有3个int,2个long,正好3*2+2*4=14字节
(2) 图象信息区
type struct BMP_info
{
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned int biPlanes;
unsigned int biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXplosPerMeter;
unsigned long biYplosPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
}bitmapinfo;
现在算一下,2个int,9个long,正好是2+2*9*4=40字节。
(3)调色板区
typedef struct RGB_BMP_typ
{
unsigned char blue;
unsigned char green;
unsigned char red;
unsigned char reserved;
}RGB_BMP,*RGB_BMP_ptr;
说明:三原色+灰度,共4*256=1024字节。