IT袋

当前位置:主页 > 经验教程 > 软件教程 >

bmp文件格式详解

bmp文件格式详解 bmp格式解析讲解(2)

更新:2023-08-21 11:48:10 来源:IT袋 作者:苏晓敏
导读:bmp文件格式详解,当biCompression成员的值是BI_BITFIELDS,那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占据,称为红、绿、蓝掩码。分别用于描述红、绿、蓝分量

bmp文件格式详解

当biCompression成员的值是BI_BITFIELDS,那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占据,称为红、绿、蓝掩码。分别用于描述红、绿、蓝分量在16位中所占的位置。

5、BitCount=24

表示位图最多有2的24次方,大约1670万种颜色。这种位图没有调色板(bmiColors成员尺寸为0),在位数组中,每3个字节代表一个象素,分别对应于颜色R、G、B。

6、BitCount=32

表示位图最多有2的32次方种颜色。这种位图的结构与16位位图结构非常类似。

biCompression成员的值是BI_RGB时,它也没有调色板,32位中有24位用于存放RGB值,顺序是:最高位—保留,红8位、绿8位、蓝8位。这种格式也被成为888。

biCompression成员的值是BI_BITFIELDS时,原来调色板的位置将被三个DWORD变量占据,成为红、绿、蓝掩码,分别用于描述红、绿、蓝分量在32位中所占的位置。

4、BMP位图信息

BMP位图包含的信息主要有:位图文件头、位图信息头、位图数据,它们的基本概况如下:

1)bmp文件头(bmp file header):提供文件的格式、大小等信息

2)位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息

3)调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表

3)位图数据(bitmap data):就是图像数据

5、BMP位图的C语言代码解析

我们知道,一个BMP位图它包含有几部分的内容信息,大致如下图所示:

bmp文件格式详解

从图中我们可以分析出,如果要获取一个位图的完整信息,需要分别获取文件信息头、位图信息头、位图的RGB颜色数据。下面就简单演示一些简单的获取BMP位图信息的演示代码。

(1)文件信息头

文件信息头主要存放包括bmp文件的标识、大小等的信息。

获取文件信息头的数据结构可以按照如下:

typedef struct BMP_FILE_HEADER{WORD  bType;      // 文件标识符DWORD bSize;      // 文件的大小 WORD  bReserved1; // 保留值,必须设置为0  WORD  bReserved2; // 保留值,必须设置为0 DWORD bOffset;    // 文件头的最后到图像数据位开始的偏移量,//说明从文件头开始到实际的图象数据之间的字节的偏移量//因为位图信息头和调色板的长度会根据不同情况而变化//所以你可以用这个偏移值迅速的从文件中读取到位数据} BMPFILEHEADER;    // 14 字节

这个结构体的解析如下:

相关阅读