题目
学 院: 信息科学与技术学院
专 业: 学 生: 指导教师:
2014 年 12 月 02 日
1、位图的简介
位图文件(Bitmap-File ,BMP )格式是Windows 采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP 位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap ,DDB )文件格式。Windows 3.0以后的BMP 位图文件格式与显示设备无关,因此把这种BMP 位图文件格式称为设备无关位图(device-independent bitmap,DIB )格式,目的是为了让Windows 能够在任何类型的显示设备上显示BMP 位图文件。BMP 位图文件默认的文件扩展名是BMP 或者bmp 。位图以像素为单位,采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩。 2、位图的组成
典型的BMP 图像主要由四个部分组成:位图文件头、位图信息头、颜色表和位图数据。BMP 文件头的大小为14字节,文件头包括BMP 图像文件的类型、文件大小、位图起始位置等信息;位图信息头的大小为40字节,信息头包括BMP
图像的宽、高、压缩方法,以及定义颜色等信息;颜色表的大小为,颜色表用于说明位图中的颜色,其有若干个表项,每一个表项是一个RGQUAD 类型的结构,定义一种颜色;位图数据记录了位图的每一个像素值,记录的顺序为在扫描行内是从左到右,扫描行之间是从下到上,位图的一个像素值所占的字节数biBitCount 有关,当biBitCount=8时,1个像素占1个字节,此时为灰度图像;当biBitCount=24时,1个像素占3个字节,按顺序分别为B 、G 、R ,此时为彩色图像;Windows 规定一个扫描行所占的字节数必须是4的倍数(即以long 为单位),不足的以0填充。
3、位图的二进制数据分析
本文通过UltraEdit 图像编辑器打开一幅名为“Color.bmp ”的位图(图像见附录一),UltraEdit 以二进制数据形式显示BMP 图像,并通过对二进制数据的更改可以实现对BMP 图像的更改。
3.1二进制数据中的含义
图3.1 位图头文件
如图3.1所示0000h-000dh 为位图头文件,14字节的文件头分析:0000h-0001h
两字节用于识别位图类型,本位图中424D 表示位图为BMP 型;0002h-0005h 四字节表示文件大小,字节内部是先高八位后低八位,字内部是先低八位后高八位,本位图大小为000EFAEEh=981742字节;0006h-0009h 四字节为位图文件保留字,必须设置为0;000Ah-000Dh 四字节表示从文件开始到位图数据之间的偏移量,本位图为00000036h=54字节。
图3.2 位图信息头
如图3.2所示0000eh-0035h 为位图信息头,40字节的位图信息头分析:000Eh-0011h 四字节描述位图信息块的大小,本位图为28h ;0012h-0015h 四字节表示图像的宽度,本位图为0000022Ah=554像素;0016h-0019h 四字节表示图像的高度,本位图为000001BBh=443像素;001Ah-001Bh 两字节表示图像的plane 总数,恒为1,本位图为0001h=1;001Ch-001Dh 两字节表示图像的颜色位数的取值,本位图为0020h=32;001Eh-0021h 四字节表示图像的压缩方式,本位图为00000000h=0,即没有压缩;0022h-0025h 四字节表示图像数据区的大小其必须是4的倍数,本位图为00000000h=0,即本文位图数据区为保留字;0026h-0029h 四字节表示水平每米有多少像素,本位图为00000EC4h=3780像素/米;0026h-0029h 四字节表示垂直每米有多少像素,本位图为00000EC4h=3780像素/米;002Eh-0031h 四字节表示图像所用的颜色数,固定为0,本位图为00000000h=0;0032h-0035h 四字节表示重要颜色数吧,固定为0,本位图为00000000h=0。
图3.3 位图颜色表
如图3.3所示0036h-0435h 为颜色表,1024字节的颜色表分析:对于颜色表中的每个表项,这4个字节用下述方法来描述RGB 的值:1字节用于蓝色分量,
1字节用于绿色分量,1字节用于红色分量,1字节用于填充符(设置为0)。
图3.4 位图数据区
如图3.4所示00000436h-000EFAEDh 为图像数据区,图像数据的分析:图像数据区的大小从0436h 到二进制文件末尾,本位图的数据区大小为00000436h-000EFAEDh ,图像数据的大小取决于压缩方法,它包含所有的位图数据字节,这些数据实际就是彩色颜色表的索引号。
3.2二进制数据的改变
图3.5 颜色位数的修改
如图3.5所示,改变颜色为数,原图为32位,修改后为24位,24位的位图如图附录二所示,修改后色彩深度值降低。
图3.6 图像尺寸的修改
如图3.6所示,将原图像的尺寸由554x443修改为320x240,修改后的图像尺寸变小,结果图如图附录三所示。
图3.7 图像数据区的修改
如图3.7所示,修改原图像的数据区域,数据区域实际是彩色颜色表的索引号,因此修改后图像对应区域没有对应的颜色表,修改部分将呈现为黑色,修改
后图像如图附录四所示。
4、结论
在UltraEdit 环境下,对BMP 图像的二进制数据编辑可知,通过对图像二进制数据的更改,可以实现BMP 图像的尺寸、颜色位数、数据区等信息的更改。 附录一
附录二
附录三
附录四
题目
学 院: 信息科学与技术学院
专 业: 学 生: 指导教师:
2014 年 12 月 02 日
1、位图的简介
位图文件(Bitmap-File ,BMP )格式是Windows 采用的图像文件存储格式,在Windows 环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP 位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap ,DDB )文件格式。Windows 3.0以后的BMP 位图文件格式与显示设备无关,因此把这种BMP 位图文件格式称为设备无关位图(device-independent bitmap,DIB )格式,目的是为了让Windows 能够在任何类型的显示设备上显示BMP 位图文件。BMP 位图文件默认的文件扩展名是BMP 或者bmp 。位图以像素为单位,采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩。 2、位图的组成
典型的BMP 图像主要由四个部分组成:位图文件头、位图信息头、颜色表和位图数据。BMP 文件头的大小为14字节,文件头包括BMP 图像文件的类型、文件大小、位图起始位置等信息;位图信息头的大小为40字节,信息头包括BMP
图像的宽、高、压缩方法,以及定义颜色等信息;颜色表的大小为,颜色表用于说明位图中的颜色,其有若干个表项,每一个表项是一个RGQUAD 类型的结构,定义一种颜色;位图数据记录了位图的每一个像素值,记录的顺序为在扫描行内是从左到右,扫描行之间是从下到上,位图的一个像素值所占的字节数biBitCount 有关,当biBitCount=8时,1个像素占1个字节,此时为灰度图像;当biBitCount=24时,1个像素占3个字节,按顺序分别为B 、G 、R ,此时为彩色图像;Windows 规定一个扫描行所占的字节数必须是4的倍数(即以long 为单位),不足的以0填充。
3、位图的二进制数据分析
本文通过UltraEdit 图像编辑器打开一幅名为“Color.bmp ”的位图(图像见附录一),UltraEdit 以二进制数据形式显示BMP 图像,并通过对二进制数据的更改可以实现对BMP 图像的更改。
3.1二进制数据中的含义
图3.1 位图头文件
如图3.1所示0000h-000dh 为位图头文件,14字节的文件头分析:0000h-0001h
两字节用于识别位图类型,本位图中424D 表示位图为BMP 型;0002h-0005h 四字节表示文件大小,字节内部是先高八位后低八位,字内部是先低八位后高八位,本位图大小为000EFAEEh=981742字节;0006h-0009h 四字节为位图文件保留字,必须设置为0;000Ah-000Dh 四字节表示从文件开始到位图数据之间的偏移量,本位图为00000036h=54字节。
图3.2 位图信息头
如图3.2所示0000eh-0035h 为位图信息头,40字节的位图信息头分析:000Eh-0011h 四字节描述位图信息块的大小,本位图为28h ;0012h-0015h 四字节表示图像的宽度,本位图为0000022Ah=554像素;0016h-0019h 四字节表示图像的高度,本位图为000001BBh=443像素;001Ah-001Bh 两字节表示图像的plane 总数,恒为1,本位图为0001h=1;001Ch-001Dh 两字节表示图像的颜色位数的取值,本位图为0020h=32;001Eh-0021h 四字节表示图像的压缩方式,本位图为00000000h=0,即没有压缩;0022h-0025h 四字节表示图像数据区的大小其必须是4的倍数,本位图为00000000h=0,即本文位图数据区为保留字;0026h-0029h 四字节表示水平每米有多少像素,本位图为00000EC4h=3780像素/米;0026h-0029h 四字节表示垂直每米有多少像素,本位图为00000EC4h=3780像素/米;002Eh-0031h 四字节表示图像所用的颜色数,固定为0,本位图为00000000h=0;0032h-0035h 四字节表示重要颜色数吧,固定为0,本位图为00000000h=0。
图3.3 位图颜色表
如图3.3所示0036h-0435h 为颜色表,1024字节的颜色表分析:对于颜色表中的每个表项,这4个字节用下述方法来描述RGB 的值:1字节用于蓝色分量,
1字节用于绿色分量,1字节用于红色分量,1字节用于填充符(设置为0)。
图3.4 位图数据区
如图3.4所示00000436h-000EFAEDh 为图像数据区,图像数据的分析:图像数据区的大小从0436h 到二进制文件末尾,本位图的数据区大小为00000436h-000EFAEDh ,图像数据的大小取决于压缩方法,它包含所有的位图数据字节,这些数据实际就是彩色颜色表的索引号。
3.2二进制数据的改变
图3.5 颜色位数的修改
如图3.5所示,改变颜色为数,原图为32位,修改后为24位,24位的位图如图附录二所示,修改后色彩深度值降低。
图3.6 图像尺寸的修改
如图3.6所示,将原图像的尺寸由554x443修改为320x240,修改后的图像尺寸变小,结果图如图附录三所示。
图3.7 图像数据区的修改
如图3.7所示,修改原图像的数据区域,数据区域实际是彩色颜色表的索引号,因此修改后图像对应区域没有对应的颜色表,修改部分将呈现为黑色,修改
后图像如图附录四所示。
4、结论
在UltraEdit 环境下,对BMP 图像的二进制数据编辑可知,通过对图像二进制数据的更改,可以实现BMP 图像的尺寸、颜色位数、数据区等信息的更改。 附录一
附录二
附录三
附录四