手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

浅析BMP文件格式

时间:2024-10-24 04:08:04

我们在编程的时候,有的时候会用到BMP文件的存储以及读取,这个时候就需要对BMP文件格式有一个大概的了解才能顺利的读取以及存储BMP文件

浅析BMP文件格式

总述

1、BMP文件总体来说由四部分构成,分别为位图文件头、位图信息头、彩色表和图像数据阵列。知道了文件的组成那么大概说一下文件这几部分大小:位图文件头大小为14字节,位图信息头为40字节,彩色表根据BMP图的不同(我感觉这里的不同指的就是平时说的单色位图、8位位图以及16位位图或者24位位图这种不同)而大小不同图像数据阵列就是看图片的大小而不同了,接下来具体针对不同部分来进行解释,如下图:

浅析BMP文件格式

位图文件头

1、位图文件头如下图有五个部分组成,依次进行解释:1.bfType:2字节 表示位图类型,由于这里解析的是BMP文件,所以这两个字节为BM2.bfSize:4字节 表示文件的大小3.bfReserved1:2字节 这个是保留的,为04.bfReserved2:2字节 这个也是保留的,为05.bfOffBits:4字节 这个是说文件开始到实际图像数据之间的字节偏移量,我理解的文件包括四个部分,最后一个部分为实际图像数据,所以这个量指的就是前三个内容的大小

浅析BMP文件格式

位图信息头 和 彩色表

1、下图中的变量BITMAPINFO结构表示位图信息头,包括两个部分,分别解释:1.bmiHeader 40字节 表示位图文件信息头 这个在步骤2进行详细解释2.bmiColors 字节不定 表示彩色表 这个在步骤3进行详细解释

浅析BMP文件格式

2、下图中表示的就是bmiHeader 位图信息头的组成部分,分别进行解释:1.biSize 4字节 表示位图文件信息头的大小(为40 单位是字节)2.biWidth 4字节 表示位图文件的宽度(像素)3.biHeight 4字节 表示位图文件的高度(像素)4.biPlanes 2字节 不太理解,一般为15.biBiCount 2字节 这个就是常说的几位位图,值为1/4/8/16/24/326.biCompression 4字节 表示位图文件的压缩方式,默认0 表示没有压缩7.biSizeImage 4字节 表示图像的大小,当没有压缩的时候,这个值可以为08.biXPelsPerMeter 4字节 表示水平分辨率9.biYPelsPerMeter 4字节 表示垂直分辨率10.biCIrUsed 4字节 表示彩色表中的颜色索引数目11.biCIrImportant 4字节 表示有重要影响到颜色索引数目

浅析BMP文件格式

3、下图中表示彩色表中一个彩色快的结构,分别进行解释1.rgbBlue 1字节 蓝色2.rgbGreen 1字节 绿色3.rgbRed 1字节 红色4.rgbReserved 1字节 保留位0

浅析BMP文件格式

4、说明一点:当位图为单色位图的时候,有2个彩色快当位图为4位位图的饿时候,有16个彩色快当位图为8位位图的时候,有256个彩色快当位图为24位位图的时候,没有彩色快

图象数据阵列字节

1、第四部分是图像数据类,一幅图的数据顺序是从左往右,然后从上往下,(举个例子2x2,顺序就是0,0 0,1 1,0 1,1 ),然后需要注意一点是windows读取文件一行字节数必须是4的倍数,所以不够4字节要补齐,然后就用到了下面图中的公式,下图中计算结果就是一行要用到的字节数,如下图:

浅析BMP文件格式

2、说明一点:当位图为单色位图时,8个像素占一个字节当位图为4位位图时,4个像素占一个字节当位图为8位位图时,1个像素占一个字节当位图为24位位图时,1个像素占三个字节

© 手抄报圈