BMP图片

BMP是一种图形格式,能被许多应用程序所支持。可以通过C程序对BMP图片进行查看与修改操作。


 

BMP组成结构

BMP由4部分组成,分别是位图文件头、位图信息头、调色板、位图数据。

1.位图文件头(bitmap-file header)

位图文件头共有14个字节,按顺序排列内容如下:

1>UINT bfType 是文件标识,共两个字节。Windows中此字段总为"BM".

2>DWORD bfSize 是文件大小,共四个字节。

3>UINT bfReserved1 是保留字符,共两个字节,通常是0。

4>UNIT bfReserved2 也是保留字符,共两个字节,通常是0.

5>DWORD bfOffBits 是偏移量,共四个字节,表示从文件头开始到实际的图像数据之间的字节的距离偏移量。

2.位图信息头(bitmap-information header)

位图文件头的字节数并不确定,大多数情况下是40个字节,按常见40个字节的顺序排列内容如下:

1>DWORD biSize 是位图信息头的长度,共四个字节。

2>LONG biWidth 是图像宽度,共四个字节。

3>LONG biHeight 是图像高度,共四个字节。

4>WORD biPlanes 是图像面数,共两个字节,这个值通常为“1”.

5>WORD biBitCount 是图片像素位数,共两个字节。一般只有6种情况:

1表示单色位图,4表示16色位图,8表示256色位图,16表示16位高彩色位图,24表示24位真彩色位图(最常见),32表示32位增强真彩色位图。

6>DWORD biCompression 是压缩种类,共四个字节。一般只有四种情况:

0表示不压缩,1表示RLE8压缩,2表示RLE4压缩,3表示每个像素值由指定的掩码决定。

7>DWORD biSizelmage 是位图数据大小,共四个字节。该数据必须是4的倍数,若不为4的倍数则用0补齐。

8>LONG biXPelsPerMeter 是水平分辨率,共四个字节,单位为像素/米.

9>LONG biYPelsPerMeter 是垂直分辨率,共四个字节,单位为像素/米.

10>DWORD biClrUsed 表示位图用到的颜色数,共四个字节。0表示使用全部颜色,也可以用2^x(颜色位数)来表示。

11>DWORD biClrImportant 表示重要的颜色数,共四个字节。0表示所有颜色都重要。在一些情况下若不能显示所有颜色,该值会辅助驱动程序显示颜色。

3.调色板(color table)

调色板是单色、16色、256色图像文件所特有的,相对应的调色板大小为2、16、256.调色板以4字节为单位,按照RGB的形式,每4个字节存放一个颜色值。按顺序排列内容如下:

1>BYTE rgbBlue 表示蓝色分量,一个字节。

2>BYTE rgbGreen 表示绿色分量,一个字节。

3>BYTE rgbRed 表示红色分量,一个字节。

4>BYTE rgbReserved 为保留值,一个字节,通常是0.

4.位图数据(bitmap data)

若采用调色板,则位图数据是在调色板中的编号,否则就是实际RGB值。


 

参考资料

1.位图文件(BMP)格式以及Linux下C程序实现 - 我心狂野 - 博客园 (cnblogs.com)

2.linux 显示bmp文件大小,Linux 下查看bmp图片的基本信息_马华兴的博客-CSDN博客

3.BMP文件结构 - kingmoon - 博客园 (cnblogs.com)

4.(8 封私信 / 72 条消息) bmp是怎样通过二进制数据进行编码的? - 知乎 (zhihu.com)

5.七、位图的读入方法 - 知乎 (zhihu.com)

6.BMP文件格式详解 - 知乎 (zhihu.com)

7.(8 封私信 / 72 条消息) 如何用c操作图片? - 知乎 (zhihu.com)

8.BMP格式_百度百科 (baidu.com)

posted @ 2022-09-17 14:26  20221312付安旭  阅读(465)  评论(0编辑  收藏  举报