一、 实验基本原理
1. BMP文件的组成结构
BMP(全称 Bitmap)是 Windows 操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,在绝大多数应用中不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选1bit、4bit、8bit、16bit及 24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于 BMP文件格式是 Windows环境中交换与图有关的数据的一种标准,因此在 Windows环境中运行的图形图像软件都支持 BMP图像格式。典型的 BMP图像文件由四部分组成:
a) 位图头文件数据结构,它包含 BMP图像文件的类型、显示内容等信息。
b) 位图信息数据结构,它包含有 BMP图像的宽、高、压缩方法,以及定义颜色等信息。
c) 调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的 BMP)就不需要调色板。
d) 位图数据,这部分的内容根据 BMP位图使用的位数不同而不同,在 24位图中直接使用 RGB,而其他的小于 24位的使用调色板中颜色索引值。
2. 字节序
不同的计算机系统采用不同的字节序存储数据,同样一个 4字节的 32位整数,在内存中存储的方式不同。字节序分为小尾字节序(Little Endian)和大尾字节序(Big Endian)。Intel处理器大多数使用小尾字节序,Motorola处理器大多数使用大尾(Big Endian)字节序。
小尾就是低位字节排放在内存的低端,高位字节排放在内存的高端,即所谓的“低位在前,高位在后”。大尾就是高位字节排放在内存的低端,低位字节排放在内存的高端,即所谓的“高位在前,低位在后”。 TCP/IP各层协议将字节序定义为大尾,因此 TCP/IP协议中使用的字节序通常称之为网络字节序。
在实现 BMP文件头信息的写入时,需要注意整数保存时的字节序。例如:文件大小是以Intel