1 / 3
文档名称:

BMP文件结构的探索.doc

格式:doc   大小:84KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

BMP文件结构的探索.doc

上传人:小雄 2021/5/15 文件大小:84 KB

下载得到文件列表

BMP文件结构的探索.doc

相关文档

文档介绍

文档介绍:BMP文件结构的探索 Whatlf2004-9-10 一、文件格式Bmp文件是非常常用的位 图文件,无论是游戏还是其他都被广泛使用。针对bmp文件的处理也有一堆现成 的api进行调用,然而文件内部究竟怎样,如何自己来解析这样的文件呢?为了消 除无聊,我用了几 天时间来研究了一下,同时作为学****笔记,进行记录。首先, 整个bmp文件的内容可以分为3到4块。之所以分为3到4块而不是固定的 值,是因为,对于bmp来说可能存在调色板或者一些掩码。具体稍候讨论。第一 块是bmp的文件头用于描述整个bmp文件的情况。结构如下:typedef struct tagBITMAPFILEHEADER ( WORD DWORD WORD WORD DWORD bfType;
bfSize; bfReservedl; bfReserved2; bfOffBits; } BITMAPFILEHEADER, *PBITMAPFILEHEADER;这些信息相当有用,如果你想直接来解析bmp文件。 第一个bfType用于表示文件类型,如果它是bmp文件,那么它这个位置的值一 定是”BM”也就是0x4D42。第二个bfSize表示整个文件的字节数。第三第四个 则保留,目前无意义,最后一个相当重要,表示,位图的数据信息离文件头的偏移 量,以字节为单位。第二块是位图信息头,即BITMAPINFOHEADER,用于描 述整个位图文件的情况。以下挑重要的数据进行解释typedefstruct
tagBITMAPINFOHEADER( DWORD LONG LONG WORD WORD DWORD DWORD LONG LONG DWORD DWORD biSize; //表示本结构的大小 biWidth; 〃位 图的宽度biHeight; 〃位图的高度biPlanes; 〃永远为1,由于没有用过所以没做研 究附msdn解释biBitCount;//位图的位数分为1 4 8 16 24 32本文没对14进行 研究 //Specifies the number of planes for the target device. This value must be set to 1. biCompression;//本以为压缩类型,但是却另外有作用,稍候解释biSizeimage; //表 示位图数据区域的大小以字节为单位biXPelsPerMeter; biYPelsPerMeter; biClrUsed; biClrlmportant; } BITMAPINFOHEADER, *PBITMAPINFOHEADER;第三块就 是调色板信息或者掩码部分,如果是8位位图则存放调色板;与32位位图 则存放RGB 16颜色的掩码,这些掩码以DWORD大小来存放。最后一块就是 位图的数据实体。以上文件信息可以在任意一篇bmp文件结构的文章中找到描 述,所以本文只是稍微带过。
二、4字节对其问题关于数据读取。Bmp文件有个重要特性,那就是对于数据区 域而言,每行的数据它必须凑满4字节,如果没有满,则用冗余的数据来补齐。 这个特性直接影响到我们读取位图数据的方法,因为在我们看来(x,y)的数据应 该在y*width+x这样的位置上但是因为会有冗余信息那么必须将width用 width+该行的冗余量来