位图(BMP)文件头格式及数据分析

由于BMP文件有诸多格式,这里只以256色彩色位图为例来分析一下。

  这个图是我自己用画图板做的,如下。


BMP图


图1 BMP图


  由于这里限制上传BMP文件,所以这个是JPG的。我的原始的BMP文件大小是200*150,文件大小是31078字节,注意看属性的时候不是占用空间大小。


  在这里,我用VC编了一个程序,读入BMP文件的数据,然后分析固有的站用54个字节的文件头和信息头。


文件头和信息头数据


图2 文件头和信息头数据


  注意:图中唯一的一条竖线是文件头14个字节和信息头40个字节的分隔线。


  1、BMP文件的4个部分


  BMP文件分文件头、信息头、调色板和数据区四个部分。文件头和信息头里包含一些信息,调色板顾名思义是调色的信息,数据区就是位图数据。


  这里需要注意的是,为什么会有调色板呢?调色板又该有多少数据呢?我们分析一下这个文件。256色位图是用256种颜色表示整个图片
息,也就是说数据从00~FF一共256个数代表256种颜色,而大家都知道,在计算机上,颜色是用RGB来表示的,RGB分别表示红绿蓝三种颜色的分
量,必须用三个字节表示,所以数据中一个字节的信息必须经过“翻译”才能得到真正的RGB颜色,所以数据区里的数据可以理解为当前相素颜色的索引号,拿着
这个索引号,去调色板里找,找到的才是对应的RGB信息。


  调色板的格式为:


调色板的格式


  前三个字节一看就明白了,是表示RGB信息,而最后一个字节为保留字节,不用去管。


  那么,调色板需要多少数据呢?因为256种颜色对应256个颜色索引号,每个索引号必须对应1个调色板信息,所以必须有256个调色板信息,而
1个调色板信息又有4个字节,所以,调色板区站用字节一共是256*4=1024字节。也就是说,从文件开头到真正的位图数据,一共间隔
14+40+1024=1078字节。


  2、文件头分析


  文件头占14个字节,如图2所示。前两个字节“42
4d”表示“BM”两字,意思是这个文件是BMP文件;后面4个字节表示整个文件大小,经过计算00007966的对应十进制为31078,正好是本文件
的字节数;再后面4个字节为保留字;最后4个字节为数据偏移量,也就是刚才计算的1078字节。


  3、信息头分析


  前4个字节表示记录长度,也就是信息头的长度,固定为40(0x28);后面8个字节代表图片长宽信息,表示图片是200*150的;后面两个
字节为1,必须是1;后面两个字节是8,表示为8位颜色,也就是256色;后面4个字节是压缩信息,这里是0000;后面4个字节00007530是
200*150得到的结果,也就是总像素数;再后面的我们就不去管了。

4、24位位图数据区的格式

数据区是按b,g,r,b,g,r...的顺序排列的。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值