BMP 文件格式概述

BMP 文件格式概述

16进制下的bmp图片

BMP 格式 由以下部分组成。

BMP文件头(14 bytes) ,存放一些文件相关的信息。

BMP信息头,通常是 40 bytes 大小,也可以理解成图像信息头,存放一些图像相关的信息,例如宽高之类的数据。

调色板,大小由 颜色索引决定,本文的 bmp 是 RGB24 模式,真彩色,没有用到调色板,所以这个区域是0字节。

位图数据,对于这里的 img.bmp 来说,里面就是 RGB 数据,一个像素占 3 个字节。

BMP文件头

BMP文件头的大小是 14 字节

第 1~2 字节 是 magic number,在这里面是 BM 字符串。实际上 这两个字节可以是以下的值:

BM:windows

BA:os/2 bitmap array

CI:os/2 color icon

CP:os/2 color pointer

IC:os/2 icon

PT:os/2 pointer

magic number.jpeg

第 3~6 个字节是BMP文件的大小,在本文里面是 0x2525A 注意,数据类型存储是小端存储的,需要从右往左看。

image size.jpeg

0x2525A 换算成十进制就是 152154 字节,这个值跟 文件属性是可以对得上的,如下图:

文件属性.jpg

第 7~10 个字节 是保留字节,以后扩展用的,这4个字节目前永远是 0 。

reserve byte.jpeg

第 11~14 个字节 是实际的像素数据的偏移值,在这里面是 0x36 ,没有调色板通常都是 0x36,所以从 54 字节开始,就是真正的 RGB 数据。

image offset.jpeg

BMP信息头

BMP信息头 是从 第 15 个字节开始的,前面 14 个字节 被 BMP文件头 用了。第 15 ~ 18 字节是 BMP信息头 的大小,这里的第 15 ~ 18 字节是 0x00000028 ,所以是 40 字节大小(包含自身)。

info size.jpeg

第 19~22 字节 是 图像的宽度,单位是像素,在本文是 0x000000E1 , 十进制是 225 ,也就是 一行里面有 225 个像素。

witdh.jpeg

第 23~26 字节 是 图像的高度,单位是像素,在本文是 0x000000E1 , 十进制是 225,也就是 一列里面有 225 个像素。高度是有符号的,可能是负数,负数的情况暂不考虑。

height.jpeg

第 27~28 字节是 color planes 的数量 ,通常是 01 。

planes cnt.jpeg

第 29~30 字节是 指每个像素 需要多少 位来存储,这里是 0x0018 ,十进制是 24 ,所以是 RGB24 模式的,一个像素占 24 位。

bit depth.jpeg

第 31~34 字节是 压缩类型,本文没有压缩,所以是 0 。

compress.jpeg

第 35~38 字节是 图像大小,不包含 BMP文件头 跟 BMP信息头,其实 BMP文件头就有总文件大小,152154,减去 54 头部数据,跟这 4 字节内容 0x25224 是一致的。

size without head.jpeg

第 39~42 字节是 Width resolution in pixels per meter,水平分辨率,本文是 00 ,所以不管他。

witdh resolution.jpeg

第 43~45 字节是 Height resolution in pixels per meter,垂直分辨率,本文是 00 ,所以不管他。

height resolution.jpeg

第 46~49 字节是 颜色表中的颜色索引数,本文没有索引表,是真彩色,所以是 00 。

index.jpeg

第 50~53字节表示对图像显示有重要影响的颜色索引数码,本文是 00 ,代表全都重要。本文没用到索引表,不用管这个字段。

significant index.jpeg

RGB数据介绍

圈出来的像素 是 R等于0xA8,G等于0x59,B等于0x38,注意,这个像素是位于 左下角的第一个像素,不是左上角。

注意,RGB24 模式中的顺序是 BGR,第一个字节是 B,第二个字节是 G, 第三个字节才是 R。

pixel.jpeg

文件中的像素排列顺序是从左下角到右上角,这个排列顺序是由 BMP信息头里面那个高度是正数还是负数决定的。

下面我们手动修改一下 这些颜色,把像素值改成绿色,如下图:

change hex.jpg

change color.jpg

RGB24 真彩色占用的存储空间是很大的,img.bmp 像素只有 225x225 却占了152K大小。

参考链接:https://ffmpeg.xianwaizhiyin.net/base-knowledge/raw-rgb.html

🌸 相关推荐 🌸

免费AI填色页生成器
bt365体育在线官网

免费AI填色页生成器

📅 07-30 👀 822
H1Z1多人PVP联机心得
365bet足球论坛

H1Z1多人PVP联机心得

📅 08-03 👀 6954
揭秘北京最著名同性恋者聚集地:在这什么都敢说
外勤365下载安装版本

揭秘北京最著名同性恋者聚集地:在这什么都敢说

📅 06-27 👀 3299