bmp文件格式详解.doc
《bmp文件格式详解.doc》由会员分享,可在线阅读,更多相关《bmp文件格式详解.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.*窗体顶端BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。下面以Notepad+为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmp file head
2、er):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表 位图数据(bitmap data):就是图像数据啦_下面结合Windows结构体的定义,通过一个表来分析这四个部分。我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移5
3、4个字节就是位图数据了,这其实说的是24或32位图的情况。这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。 下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。 我们使用的图像显示如下: 这是一幅16位的位图文件,因此它是含有调色板的。 在拉出图像数据进行分析之前,我们首先进行几个约定: 1. 在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。如数据0x1756在内存中的存储顺序为: 这种存储方式称为小端方式(little endian) , 与之相反的是大端方式(big
4、endian)。对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。2. 以下所有分析均以字节为序号单位进行。 下面我们对从文件中拉出来的数据进行剖析: 一、bmp文件头Windows为bmp文件头定义了如下结构体: typedef structtagBITMAPFILEHEADER UINT16 bfType; DWORD bfSize; UINT16 bfReserved1; UINT16 bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER; 其中: 对照文件数据我们看到:1-2 :424dh = BM,表示这是Windows支持的位图格式。有
5、很多声称开头两个字节必须为BM才是位图文件,从上表来看应为开头两个字节必须为BM才是Windows位图文件。3-5 :00010436h = 66614 B = 65.05 kB,通过查询文件属性发现一致。6-9 :这是两个保留段,为0。A-D:00000436h = 1078。即从文件头到位图数据需偏移1078字节。我们稍后将验证这个数据。共有14个字节。二、位图信息头同样地,Windows为位图信息头定义了如下结构体:代码 typedef structtagBITMAPINFOHEADERDWORD biSize; LONG biWidth; LONG biHeight; WORD biP
6、lanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; BITMAPINFOHEADER;对照数据文件: 0E-11:00000028h = 40,这就是说我这个位图信息头的大小为40个字节。前面我们已经说过位图信息头一般有40个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史,其实位图信息头原本有很多大小的版本的。我们看一下下表: 出于
7、兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。而 OS/2 已经过时了,因此现在最常用的格式就仅有V3 header了。因此,我们在前面说位图信息头的大小为40字节。12-15:00000100h = 256,图像宽为255像素,与文件属性一致。16-19:00000100h = 256,图像高为255像素,与文件属性一致。这是一个正数,说明图像数据是从图像左下角到右上角排列的。1A-1B:0001h, 该值总为1。1C-1D:0008h = 8, 表示每个像素占8个比特,即该图像共有256种颜色。1E-21:00000000h,BI_RGB, 说明本图像不压缩。22-25:000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- bmp 文件格式 详解
限制150内