2024年3月26日发(作者:)
维基百科的BMP定义
BMP取自位图BitMaP的缩写,也称为DIB(与设备无关的位图),是微软视窗图形子系
统(Graphics Device Interface)内部使用的一种位图图形格式,它是微软视窗平台上的一个
简单的图形文件格式。
图像通常保存的颜色深度有2(1位)、16(4位)、256(8位)、65536(16位)和1670
万(24位)种颜色(其中位是表示每点所用的数据位)。8位图像可以是索引彩色图像外,
也可以是灰阶图像。表示透明的alpha通道也可以保存在一个类似于灰阶图像的独立文件中。
带有集成的alpha通道的32位版本已经随着Windows XP出现,它在视窗的登录和主题系统
中都有使用。
文件大小计算
BMP文件通常是不压缩的,所需存储空间比较大。
一个像素所占的字节数为n∕8字节,n是位深。文件大小可以根据以下公式近似计算:
BMP文件大小≈54+4*2
n
+(width*height*n) ∕8;
54是位图文件的文件头,4*2
n
是调色板的大小(对于没有调色板的位图文件,则不存
在这一项),最后一项是像素数据。由于存储算法决定的因素,实际文件大小和计算值可能
有细微差别;因此使用的≈符号而不是等于号。
文件存储格式
BMP图像自推出以后,几经演进,存储格式也有所变化。下表详细描述了位图文件可
能包含的数据。
结构体可
名称 选
大小 用途 备注
位图文
否 14字节
件头
存储位图文
件通用信息
仅在读取文件时有用
存储位图详
固定(存在7种
DIB头 否 细信息及像
不同版本)
素格式
紧接在位图文件头后
3或4 DWORD
附加位定义像素格
是 (12或16字
掩码 式
节)
仅在DIB头是BITMAPINFOHEADER
时存在
见
调色板 备可变
注
定义图像数
据(像素数色深≤ 8时不能省略
组)所用颜色
填充区
是 可变
A
结构体对齐 位图文件头中像素数组偏移量的产物
像素数
否 可变
组
定义实际的
像素数值
像素数据在DIB头和附加位掩码中定
义。像素数组中每行均以4字节对齐
填充区
是 可变
B
结构体对齐
DIB头中ICC色彩特性数据偏移量的
产物
ICC色
彩特性是 可变
数据
定义色彩特
性
可以包含外部文件路径,由该文件来
定义色彩特性
Remark:像素数组每行均以4字节对齐,这会影响我们怎么读取像素数据。在n≤ 8
时,调色板是不可忽略的,这对于我们找到像素头是很重要的。(其他参数同样会影响我们
找到像素头)
典型的文件格式
位图头:保存位图文件的总体信息
位图信息(DIB头):保存位图文件的详细信息
调色板:保存所用颜色的定义
位图数据:保存实际像素数据
这是标准位图的文件格式,其他的一些位图图像可能会
有区别。
A 位图头(占用14个字节)
字节 #0-1 保存文件标识符,典型的为BM (存储数据 42 4D 代表的是B和M
的ascii码)
字节 #2-5 保存文件大小
字节 #6-9 是保留部分,留作扩展
字节 #10-13 保存实际像素数据的起始位置 (比如,36 00 00 00表示从第36H(54)
字节开始为像素数据)
B 位图信息(占用40个字节,从第15个字节开始)
#14-17 定义以下用来描述影像的区块大小
#18-21 保存水平像素个数
#22-25 保存竖直像素个数
#26-27 保存所用彩色位面个数


发布评论