BMP文件格式

.图结构如下:

---- 一、BMP文件

 

---- 1. BMP文件

---- BMP文件由文件、位信息色信息和形数据四部分成。

 

---- 2. BMP文件

---- BMP文件数据构含BMP文件的型、文件大小和位起始位置等信息。

---- 构定如下:

 

typedef struct tagBITMAPFILEHEADER

{

WORDbfType;   // 文件的型,必须为BM

DWORD   bfSize;   // 文件的大小,以字节为单

WORDbfReserved1;  // 文件保留字,必须为0

WORDbfReserved2;  // 文件保留字,必须为0

DWORD   bfOffBits; // 数据的起始位置,以相于位

// 文件的偏移量表示,以字节为单

} BITMAPFILEHEADER;

 

---- 3. 信息

 

BMP信息数据用于明位的尺寸等信息。

typedef struct tagBITMAPINFOHEADER{

   DWORD  biSize;   // 构所占用字

   LONGbiWidth;  // 度,以像素为单

   LONGbiHeight; // 的高度,以像素为单

   WORD   biPlanes; // 标设备级别,必须为1

   WORD   biBitCount// 个像素所需的位数,必1(双色),

  // 4(16)8(256)24(真彩色)之一

   DWORD  biCompression;   // 图压缩类型,必 0(压缩),

  // 1(BI_RLE8压缩类)2(BI_RLE4压缩类)之一

   DWORD  biSizeImage; // 的大小,以字节为单

   LONGbiXPelsPerMeter; // 水平分辨率,米像素数

   LONGbiYPelsPerMeter;  // 垂直分辨率,米像素数

   DWORD  biClrUsed;// 图实际使用的色表中的色数

   DWORD  biClrImportant;// 图显程中重要的色数

} BITMAPINFOHEADER;

 

---- 4. 色表

 

    色表用于明位中的色,它有若干个表一个表是一个RGBQUAD型的构,定种颜色。RGBQUAD构的定如下:

 

typedef struct tagRGBQUAD {

BYTErgbBlue;// 色的亮度(围为0-255)

BYTErgbGreen;   // 绿色的亮度(围为0-255)

BYTErgbRed; // 色的亮度(围为0-255)

BYTErgbReserved;// 保留,必须为0

} RGBQUAD;

色表中RGBQUAD构数据的个数有biBitCount来确定:

biBitCount=1,4,8,分2,16,256个表;

biBitCount=24,没有色表

   信息色表成位信息,BITMAPINFO构定如下:

typedef struct tagBITMAPINFO {

   BITMAPINFOHEADER bmiHeader;   // 信息

   RGBQUAD  bmiColors[1];  // 色表

} BITMAPINFO;

 

---- 5. 数据

 

    数据记录了位一个像素记录顺序是在描行内是从左到右,描行之是从下到上。的一个像素所占的字:

 

biBitCount=18个像素占1个字;

biBitCount=42个像素占1个字;

biBitCount=81个像素占1个字;

biBitCount=24,1个像素占3个字;

 

    Windows定一个描行所占的字数必 4的倍数(即以long为单),不足的以0填充,一个描行所占的字算方法: DataSizePerLine= (biWidth* biBitCount+31)/8; 一个描行所占的字 DataSizePerLine= DataSizePerLine/4*4; // 数必4的倍数位数据的大小(压缩情况下): DataSize= DataSizePerLine* biHeight;

你可能感兴趣的:(struct,bi,windows)