BMP 文件结构介绍

在 BMP 文件格式中,每个字节和位都有特定的含义。BMP 文件格式是一种位图图像文件格式,用于存储数字图像,尤其是在 Windows 操作系统中。以下是 BMP 文件格式的基本结构和每个部分的含义:

BMP 文件结构

BMP 文件结构通常分为以下几个部分:

  1. 文件头(Bitmap File Header):包含文件类型、文件大小、保留字段以及位图数据的偏移量。
  2. 信息头(Bitmap Info Header):包含位图的宽度、高度、颜色位数等信息。
  3. 颜色表(Color Table):(对于 1 位、4 位和 8 位的 BMP 文件)包含颜色的定义。
  4. 位图数据(Bitmap Data):实际的图像数据。

详细结构

1. 文件头(Bitmap File Header)

文件头固定为 14 字节,结构如下:

偏移量大小描述
02文件类型(通常为 'BM')
24文件大小(字节)
62保留字段1(通常为 0)
82保留字段2(通常为 0)
104位图数据的偏移量(字节)
2. 信息头(Bitmap Info Header)

信息头大小可变,但最常见的是 40 字节,结构如下:

偏移量大小描述
04信息头大小(字节,通常为 40)
44图像宽度(像素)
84图像高度(像素)
122颜色平面数(总是 1)
142每像素位数(1、4、8、16、24、32)
164压缩方式(0=不压缩)
204图像大小(字节,可能为 0)
244水平分辨率(像素/米)
284垂直分辨率(像素/米)
324使用的颜色数(0=使用所有颜色)
364重要颜色数(0=所有颜色都重要)
3. 颜色表(Color Table)

颜色表用于 1 位、4 位和 8 位 BMP 图像,每个颜色包含 4 字节(蓝色、绿色、红色和保留字节)。颜色表的大小取决于每像素的位数:

  • 1 位图像:最多 2 个颜色条目
  • 4 位图像:最多 16 个颜色条目
  • 8 位图像:最多 256 个颜色条目
4. 位图数据(Bitmap Data)

位图数据是实际的图像像素值,根据每像素位数的不同,其表示方式也不同:

  • 1 位:每个像素用 1 位表示(0 或 1),每字节包含 8 个像素。
  • 4 位:每个像素用 4 位表示(0-15),每字节包含 2 个像素。
  • 8 位:每个像素用 8 位(1 字节)表示。
  • 16 位:每个像素用 16 位(2 字节)表示。
  • 24 位:每个像素用 24 位(3 字节)表示,分别为蓝色、绿色和红色。
  • 32 位:每个像素用 32 位(4 字节)表示,分别为蓝色、绿色、红色和保留字节(或透明度)。

示例

假设我们有一个 24 位的 BMP 文件,图像的宽度为 3 像素,高度为 2 像素。BMP 文件的部分内容可能如下:

  • 文件头:14 字节
  • 信息头:40 字节
  • 位图数据:3 像素宽 * 2 像素高 * 3 字节/像素 = 18 字节

位图数据的详细表示:

  • 第一行(从下到上):蓝色(00)、绿色(FF)、红色(00),蓝色(00)、绿色(00)、红色(FF),蓝色(FF)、绿色(00)、红色(00)
  • 第二行(从下到上):蓝色(FF)、绿色(FF)、红色(00),蓝色(00)、绿色(FF)、红色(FF),蓝色(FF)、绿色(FF)、红色(FF)

BMP 文件示意图

 

<TEXT>

文件头: 'BM' 36 00 00 00 00 00 00 00 36 00 00 00 信息头: 28 00 00 00 03 00 00 00 02 00 00 00 01 00 18 00 00 00 00 00 18 00 00 00 13 0B 00 00 13 0B 00 00 00 00 00 00 00 00 00 00 位图数据: FF FF 00 FF 00 00 00 FF FF FF FF 00 00 FF 00 00 00 FF

通过了解 BMP 文件的结构和每个字节的含义,你可以解析和生成 BMP 文件。根据需要,可以进一步深入研究 BMP 文件的其他变种和压缩格式。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pandi18

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值