BMP文件格式分析

Posted H3rmesk1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件结构

  1. 位图文件头(bitmap-file header)
  2. 位图信息头(bitmap-informationheader)
  3. 颜色表(color table)
  4. 颜色点阵数据(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字节

真彩色位图主要关心的是biWidthbiHeight这两个数值,两个数值体现的是图像的尺寸,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文件格式分析的主要内容,如果未能解决你的问题,请参考以下文章

BMP图片分析

BMP格式函数分析器java语言数学分析项目

如何用MATLAB把bmp格式变成灰度图像

CImg 无法识别文件“bmp”的格式

bmp文件格式中rgb555与rgb888之间的转换,24位与16位位图的转换

java 如何进行 bmp格式的图片转换成jpg格式