图像文件格式BMP文件格式详解
5. 2 BMP文件格式 BMP义件格式是Microsoft Windows下最常见的图像文件格式之一,它采用位映射存储 格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。 BMP文件的图像深度可选Ibit、4bit、8bit及24bito BMP文件存储数据时,图像的像素值在 文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的 最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右 边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存 储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍 数。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。 5. 2. 1典型的BMP图像文件由四部分组成: 1、位图头文件数据结构 主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息; 2、位图信息数据结构 包含图象的尺寸信息、图像用儿个比特数值来表示一个像素、图像是否压缩、图像所用 的颜色数等信息; 3、调色板 包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为 真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操 作调色板。 4、位图数据 记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是 在扫描行内是从左到右,扫描行之间是从卜•到上。这种格式我们乂称为Bottom.Up位图,当 然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位 图,也不存在压缩形式。 5、2. 2 BMP文件结构 位图文件(bitmap file, BMP)格式是Windows采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。Windows3.()以后的BMP格式与显示设 备无关,因此把这种BMP格式称为设备无关位图(Device Independentbit Bitmap , DIB)格 式,Windows能够在任何类型的显示设备上显示BMP位图。BMP位图默认的文件扩展名 是 bmpo 1、文件结构 位图文件可看成由4个部分组成:位图文件头(Bitmap-File)、位图信息头 (Bitmap-Ination Header)^彩色表(ColorTable)和定义位图的字节阵列,它们的名称 和符号如卜表1所示: 表1 BMP图像文件组成部分的名称和符号 位图文件的组成 结构名称 符号 位图文件头 BITMAPEILEHEADER bmfh 位图信息头 BITMAPINFOHEADER bmib 彩色表 RGBQUAD aColors | ] 图像数据阵列字节 BITMAPDATA aBilmapBits [ | 2、位图文件结构可综合在下表中: 表2位图文件结构 偏移量 名称 大小(byte) 内容 图 像 文 件 头 OOOh 标识符 2 两字节的内容用来识别位的类型: BM——Windows 3.x, 9x, NT, CI、CP、IC、PT——OS/2 002h File Size 4 用字节表示的整个文件的大小 006h Reserved 4 保留,设置为0 OOOAh Bitmap Data Offset 4 从文件开始到位图数据开始之间的数据(Bitmap Data)的偏移量 图 像 信 息 头 OOOEh Bitmap Header Size 4 位图信息头的长度,用来描述位图的颜色和压缩 方法等。下面的长度表示: 28 h——Windows3・X ,9X,NT… OCh/FOh——S/2 1.x 0012h Width 4 位图的宽度,以像素为单位 0016h Height 4 位图的高度,以像素为单位 001 Ah Planes 2 位图的位面数 001 Ch Bites Per Pixel 2 每个像素的位数 1—单色位图;4—16色图;8—256色位图 16—16bit高彩位图;24—24位真彩位图 001 Eh Compression 4 压缩说明: 0:无压缩: 1—RLE 8-bit/pixcl (BI.RLE4) 2—RLE 4-bit/pixel (BI——RLE8) 3—Bitfields (BLBITFIELDS) 0022h Bitmap Data Size 4 用字节数表示的位图数据的大小。 该数必须是4的倍数。 0026h Hresolution 4 用pixel/m表示的水平分辨率 002Ah Vresolution 4 用pixel/m表示的水平分辨率 002Eh Colors 4 位图使用的颜色数°如8bit/pixel表示为100h或 者256 OO32h Important Colors 4 指定重要的颜色数。当该域的值等于颜色数时, 表示所有颜色都一样重要 0036h Palette N*4 调色板规范。对于调色板中的每个表项,这4个 字节用下述方法来描述RGB的值: -1字节用于表示RGB中的蓝色分量 -1字节用于表示RGB中的绿色分量 -1字节用于表示RGB中的红色分量 -1字节用于表示填充符(设置为0) 0436h Bitmap Data X 该域的大小取决于压缩方法它包含所有的位图 数据字节,这些数据字节实际就是彩色调节器色 板的索引号 3、结构详解 (1)位图文件头:它包含有关于文件类型、义件大小和存放位置等信息,在Windows 3.()以上版本的位图文件中用BITMSPFILEHEADER结构体来定义。位图文件头包含了图像 类型、图像大小、图像数据存放地址和两个保留未使用的字段。BMP文件头数据结构含有 BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedefstructtagBITMAPFILEHEADER( WORDbfType; //位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORD bfKeserved 1; // 位图文件保留字,必须为0 WORD bfReserved2; // 位图文件保留字,必须为0 DWORD bfOfTBits; // 位图数据的起始位置,以相对于位图 〃每个像素所需的位数,必须是1(双色),4(16色),8(256色)或24(真彩色) //文件头的偏移量表示,以字节为单位 } B1TMAPF1LEHEADER; 〃该结构占据14个字节。 (2)位图信息头:位图信息用BITMAPINFO结构体来定义,位图信息头包含了位图 信息头的大小、图