BMP文件格式分析
Posted H3rmesk1t
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BMP文件格式分析相关的知识,希望对你有一定的参考价值。
BMP文件格式分析
位图定义
计算机能以位图和矢量图格式显示图像
Bitmap(位图)
- 图像又称点阵图或光栅图,它使用像素(Pixel)的一格一格的小点来描述图像,计算机屏幕就是一张包含大量像素点的网格,当把位图放大时,每一个像素小点看上去就像是一个个马赛克色块
Vector(矢量图)
- 使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的
- 位图和矢量图最简单的区别就是:矢量图可以无限放大,而且不会失真,而位图则不能
- 像Photoshop(PS)这样主要用于处理位图的软件被称之为图像处理软件;专门处理矢量图的软件被称之为图形设计软件,例如Adobe Illustrator,CorelDRAW,Flash MX等
BMP位图文件
常见的图像文件格式有:BMP、JPG(JPEG)、GIF等
BMP图像文件(Bitmap-File)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式,Windows 3.0以后的BMP文件都是指设备无关位图(DIB,device-independent bitmap),BMP位图文件默认的文件扩展名是
.BMP
,有时也会以.DIB
或.RLE
作扩展名
例图,512 x 512
BMP文件结构
- 位图文件头(bitmap-file header)
- 位图信息头(bitmap-informationheader)
- 颜色表(color table)
- 颜色点阵数据(bits data)
需要注意的是,24位真彩色位图没有颜色表只有位图文件头、位图信息头和颜色点阵数据这三部分
如果位深度是24的话,就说明图片是24位真彩色
通过
010 editor
可以看到这个文件的全部数据
BITMAPFILEHEADER(位图文件头)
位图文件头分4部分,共14字节
在Windows中数据是反的,如果一段数据为
50 1A 25 3C
,则为0x3C251A50
,因此bfSize的数据为36 00 0C 00
,其实是0x000C0036
,也就是0xC0036
BITMAPINFOHEADER(2位图信息头)
位图信息头共40字节
真彩色位图主要关心的是
biWidth
和biHeight
这两个数值,两个数值体现的是图像的尺寸,biSize、biPlanes、biBitCount
这几个数值是固定的
4颜色点阵数据
- 位图全部的像素,是按照自下向上,自左向右的顺序排列的
- RGB数据也是倒着念的,原始数据是按B、G、R的顺序排列的
Photoshop和Windows的BMP文件比较
Windows的BMP文件最后少了两个0字节,没有整体补位,bfSize(文件大小),biSizeImage(全部像素大小)也相应地减去2
行补位的公式为:widthBytes = (widthbiBitCount+31)/324
参数说明:
- Width:位图的实际宽度
- biBitCount:每个像素的位数
- 1-黑白图,4-16色,8-256色,24-真彩色
以上是关于BMP文件格式分析的主要内容,如果未能解决你的问题,请参考以下文章