bmp图片详细解析

BMP(位图)文件格式详细解析

BMP(Bitmap)是Windows操作系统中的标准图像文件格式,采用位映射存储方式,支持多种颜色深度(如1bit、4bit、8bit、24bit等),且通常不进行压缩,因此文件体积较大但图像质量无损。以下是BMP文件结构的详细解析:


1. BMP文件结构

BMP文件由四部分组成:

  1. 位图文件头(Bitmap File Header)
    • 固定14字节,包含文件类型、大小和像素数据偏移量。
    • 关键字段:
      • bfType(2字节):固定为0x4D42(ASCII “BM”),标识BMP文件。
      • bfSize(4字节):整个文件的大小(字节数)。
      • bfOffBits(4字节):从文件头到像素数据的偏移量。
  2. 位图信息头(Bitmap Information Header)
    • 固定40字节(Windows标准),描述图像尺寸、颜色深度和压缩方式。
    • 关键字段:
      • biWidthbiHeight(各4字节):图像宽高(像素)。若biHeight为负,表示像素数据从上到下存储。
      • biBitCount(2字节):每个像素的位数(如24表示真彩色)。
      • biCompression(4字节):压缩类型(0=无压缩,1=RLE8,2=RLE4)。
  3. 调色板(Color Palette,可选)
    • 仅用于颜色深度≤8位的图像(如1/4/8bit),存储颜色索引对应的RGB值。
    • 每个调色板条目占4字节(B/G/R/保留),例如16色位图的调色板大小为64字节(16×4)。
  4. 位图数据(Pixel Data)
    • 存储实际像素值,排列顺序为从左到右、从下到上(默认)。
    • 对齐规则:每行像素数据长度需按4字节对齐,不足部分填充0。
    • 颜色格式
      • 24位:BGR顺序(蓝、绿、红,各1字节)。
      • 32位:BGRA顺序(增加透明度通道Alpha)。

2. 颜色深度与存储方式

BMP支持多种颜色深度,直接影响调色板和像素数据的存储方式:

  • 1位(单色):每个像素占1位,调色板含2种颜色(通常黑白)。
  • 4位(16色):每个像素占4位,调色板含16种颜色,像素值为调色板索引。
  • 8位(256色):每个像素占1字节,调色板含256种颜色。
  • 24位(真彩色):无调色板,每个像素占3字节(BGR)。
  • 32位(增强真彩色):支持透明度(Alpha通道),每个像素占4字节(BGRA)。

3. 关键特性与注意事项

  1. 无压缩与文件体积
    • BMP通常未压缩,24位100×100像素的图像约占用30KB(100×100×3 + 54字节头部)。
  2. 扫描方向与对齐
    • 默认从图像左下角开始扫描,每行数据需填充至4字节倍数(如24位图像宽度为50时,每行填充2字节)。
  3. 设备无关性(DIB)
    • Windows 3.0后采用DIB格式,确保图像在不同设备上显示一致。
  4. 应用场景
    • 适用于需要无损编辑的场景(如医学影像),但因体积大,网页和传输中较少使用。

4. 示例解析(24位BMP)

以24位BMP为例,文件结构如下:

  1. 文件头(14字节)42 4D(BM)、文件大小、偏移量36 00 00 00(54字节)。
  2. 信息头(40字节):宽高(如C8 00 00 00=200像素)、biBitCount=18 00(24位)。
  3. 像素数据:每像素3字节(BGR),按行对齐存储。

总结

BMP文件通过文件头、信息头、调色板(可选)和像素数据四部分实现图像存储,其结构简单但冗余度高。理解其对齐规则、颜色深度和扫描顺序对图像处理编程(如LCD显示、格式转换)至关重要

没有账号?注册  忘记密码?