BMP文件二进制格式详解

本文参考 https://www.cnblogs.com/wainiwann/p/7086844.html

一、创建1像素的BMP

如图,打开画图工具->点击重新调整大小->选择像素->分别输入1
记得把保持纵横比去掉,不然为等比例修改。
在这里插入图片描述

二、 十六进制分析

UltraEdit 推荐~

bmp文件头(14位)

在这里插入图片描述

位图信息头(40位)

在这里插入图片描述

数据对齐(4的倍数)

经过比较发现,还有4个字节数据,
前面3个字节,为位图数据1像素BGR,共三个字节,并补零(每行都会)。

Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。BMP图像会对齐。
人为删掉这个补零,并修改前面的文件大小3A为39,和图片数据字段4为3,依然会提示图片顺坏。

下图为红色1像素, 00 00 FF 补零在这里插入图片描述

三、数据反序

BMP格式设计者规定,当高度为正值时,图像数据块中记录的第一行像素数据是图像的最后一行;而数据块中最后一行数据才是实际图像的第一行,也就是说,数据块中的行记录与实际图像反序。而当高度为负值时,数据块中的行记录与实际图像才是同序的

高度为负数

在这里插入图片描述
颜色数据:
00 00 00 FF FF FF 00 00 FF FF FF 00 00 FF 00 00
对应颜色:
黑 白 补零 白 红 补零

证实数据反序
在这里插入图片描述

高度为负数

在这里插入图片描述
证实数据同序
在这里插入图片描述

Guess you like

Origin blog.csdn.net/u012787710/article/details/104965377