BMP(Bitmap)是一种常见的Windows操作系统图像文件格式。它不进行压缩,直接存储原始数据,支持广泛的颜色深度,便于图像处理软件读取和编辑。
BMP文件格式是一种常用的位图图像存储方式,在Windows操作系统及其兼容软件中有广泛应用。这种格式不采用任何形式的数据压缩技术,确保了图像数据的高度保真度,但这也意味着其文件大小通常较大。
一个典型的BMP文件由以下四个主要部分构成:
1. **位图文件头**(Bitmap-File Header):
这部分包含了关于整个文件的基本信息,例如标识符(通常是BM)、总长度、保留字段以及像素数据区的起始位置。`BITMAPFILEHEADER`结构体定义了这些内容。
2. **位图信息头**(Bitmap-Information Header):
此部分提供了图像的具体描述细节,包括头部大小、宽度和高度等参数,并且决定了图像的颜色深度与尺寸规格。例如,biBitCount字段表示每个像素占用的比特数,它可以是1, 4, 8, 16, 24 或32位。
3. **颜色表**(Color Table):
对于索引色彩模式下的BMP文件,如黑白、灰度或彩色图像等低分辨率格式,这里会列出一组RGB值用于像素的查找。而对于具有更高比特数的真彩图,则无需此部分定义。
4. **位图数据**(Bitmap Data):
这部分存储了实际的像素信息,并按照从左到右及从下往上的顺序排列。对于倒置图像而言,其底部行的数据会先于顶部行被存入文件中;反之亦然。
根据不同的biBitCount值,BMP支持多种色彩表现形式:
- **单色位图**(1比特):仅包含两种颜色。
- **16色模式**(4比特):每个像素用4比特表示,并通过查找表确定具体颜色。
- **256色模式**(8比特):每像素占8比特,对应一个包括256个条目的调色板。
- **高彩色位图**(16比特):提供超过两万种色彩选择。可以是5:5:5或5:6:5格式,其中红、绿、蓝各分量的分配不同。
- **真彩色模式**(24比特):每个像素占用3个字节来表示RGB值。
- **增强型真彩图**(32比特):除了基本色彩信息外,还可能包含透明度通道。
当biCompression字段为BI_BITFIELDS时,16位BMP文件中会额外携带三个掩码定义红、绿、蓝分量在16位中的位置,如5:6:5格式的值分别为0x00F800, 0x0007E0, 和 0x00001F。
理解BMP文件结构对于开发图像处理工具或进行深入分析来说是至关重要的。这有助于开发者准确地解析和操作存储在其中的数据,尤其是在从位图数据中提取RGB信息时尤为关键。