前言
本文参考BMP位图数据 BMP是英文Bitmap(位图)的简写,由4个部分组成:文件头信息块、图像描述信息块、调色板和图像数据块
文件头信息块
一
:文件头信息块
:
0000-0001:文件标识,为字母ASCII码“BM”,
42 4D
0002-0005:整个文件大小,单位字节 D6
25 05 00 = 05 25 D6
->337366 B
D6
25 05 00 = 337366B
= 329K B
0006-0009:保留,每字节以“
00”填写。
000A
-000D:记录图像数据区的起始位置。
36 00 00 00 = 36(16) -> 54(10) (位图数据区的起始位置
)
图像描述信息块
000E-0011:图像描述信息块的大小,常为
28H
=40(10)。
0012-0015:图像宽度。以像素为单位。BA
01 00 00 = 01 BA
= 442(10)
0016-0019:图像高度。以像素为单位。FE
00 00 00 = 254(10)
001A
-001B:图像的plane总数(恒为
1)。
01 00
001C
-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。
18 00 = 18(16) = 24(10)
24代表三字节
001E-0021:数据压缩方式(数值位
0:不压缩;
1:
8位压缩;
2:
4位压缩)
00 00 00 00
0022-0025:图像区数据的大小。单位字节,该数必须是
4的倍数 A0
25 05 00 = 05 25 A0
= 337312(10) B
【
0002-0005 中整个文件总大小
337366 减去 图像区数据的大小
337312 = 54 刚好是信息块大小
0026-0029:水平每米有多少像素,在设备无关位图(
.DIB)中,每字节以
00H填写。
C4
0E
00 00 = E C4
= 3780 00H
002A
-002D:垂直每米有多少像素
:
C4
0E
00 00 = 3780 00H
002E-0031:此图像所用的颜色数。
00 00 00 00
0032-0035:指定重要的颜色数。当该域的值等于颜色数时(或者等于
0时),表示所有颜色都一样重要。
00 00 00 00
总结
整个文件大小
位置:
0002-0005 数据 D6
25 05 00 = 05 25 D6
->337366 B
图像描述块大小
位置:
000E-0011 数据
28H
图像数据块开始位置
位置:
000A
-000D 数据
36 00 00 00 = 36(16) -> 54(10)
图像数据块大小
位置:
0022-0025 数据
25 05 00 = 05 25 A0
= 337312(10) B
总文件大小
=文件头信息块
+图像描述块大小
+图像数据块大小
调色板
这个用途一般不大
图像数据块
扫描行是由底向上存储的,这就是说,阵列中的第一个字节表示位图左下角的像素,而最后一个字节表示位图右上角的像素。
如果是RGB 24位位图则使用3个byteS存储一个像素,按照BGR顺序存储 阵列最后一行的第三个字节对应阵列第一行的第三个字节