位图文件格式

BMP是BitMap的缩写。BitMap格式文件最早是在MS-Windows3.0以上版本的视窗操作系统环境下使用的与设备无关（DIB）的点阵位图文件格式，也就是说Windows可以在任何设备上显示BitMap文件。随着Windows影响的扩大及其版本的日臻完善，使Windows已经成为PC操作系统的工业标准。现在各种版本的Windows环境中运行的图形、图象文件处理工具都支持BitMap格式文件。它的主要特点有：文件结构与PCX文件类似，每个文件只能存放一幅图象；图象数据是否采用压缩方式可由用户根据需要进行选择。
每个BMP文件中都包含三个部分：

1.点阵位图文件头（BitMapFileHeader）：它里面包含有设备无关的点阵位图文件的类
型、尺寸、显示内容等信息。
BMP文件头BitMapFileHeader可以用如下结构来描述：
Typedef struct
{

int bfType;
long bfSize;
int bfReserved1;
int bfReserved2;
long bfOffbits;
}BitMapFileHeader;
此结构中各字段含义如下：
·bfType 规定的位图文件类型，必须是“BM”作为识别的BMP文件的标志。
·bfSize 位图文件的大小，以字节为单位。
·bfRserved1 位图文件保留字，必须置为0。
·bfRserved2 位图文件保留字，必须置为0。
·bfOffbits 给出位图阵列，即实际点位图相对于BitMapFileHeader的偏移量，以字节为单位。

2.

（1）点阵位图信息头（BitMapInfoHeader）数据结构：它含有关于Windows3.0及其更高版本与设备无关点阵位图的尺寸和格式信息，包括图象的宽度、高度及压缩方法等。
其结构如下：
typedef struct
{
long biSize;
long biWidth;
long biHeight;
int biPlanes;
int biBitCount;
long biComprission;
long biSizeImage;
long biXPelsPerMeter;
long biYPelsPerMeter;
long biClrUsed;
long biClrImportant;
}BitMapInfoHeader;
结构中各字段含义如下：
·biSize BitMapInfoHeader结构所需要的字节数。
·biWidth 位图的宽度（以象素为单位）。
·biHeight 位图的高度（以象素为单位）。
·biPlanes 输出设备的位平面数且必须置1。
·biBitCount 每个象素所需的位数；必须是1（单色）、4（16色）8（256色）或24（真彩色）之一。
·biCompression 点阵位图规定的压缩类型；必须是0（不压缩）、1（BI_RLE8压缩类型）或2（BI_RLE4压缩类型）之一。
·biSizeImage 位图数据字节数。
·biXPeIsPerMeter 位图的目标设备水平分辨率，以每米象素数为单位。
·biYPeIsPerMeter 位图的目标设备垂直分辨率，以每米象素数为单位。
·biClrUsed 调色板中图象实际使用的颜色数。
·biClrImportant 位图显示过程中被认为重要的颜色索引值。
（2）颜色表(RGBQUAD)：用于说明位图中的颜色。它有若干个表项，每一表项是一个RGBQUAD类型的结构，定义一种颜色。
其结构如下：
typedef struct
{
unsigned char rgbBlue;
unsigned char rgbGreen;
unsigned char rgbRed;
unsigned char rgbReserved;
}RGBQUAD;
在由RGBQUAD定义的颜色中，蓝色的亮度由rgbBlue来定，绿色的亮度由rgbGreen来定，红色的亮度由rgbRed来定。RgbReserved为保留字，必须置0。
当biBitCount=1、4、8时，颜色表中分别有2、16、256个表项。
当biBitCount=24时，颜色表中表项为空。位图阵列的每3个字节代表一个象素，3个字节直接定义了象素颜色中的蓝、绿、红的相对亮度，因此省去了颜色表中的颜色表项。
3．位图阵列。
按从左下到右上的方向存储象素的灰度值。它有压缩和非压缩两种存储格式。

返回

Imageworld Copyright © 2000-2001 Zhang Fan ZF@51.com