BMP图像文件格式深入解析
BMP图像文件格式深入解析
BMP(Bitmap)是微软Windows系统采用的一种标准图像文件格式,它能够存储无压缩的位图图像,支持多种颜色深度,包括1位、4位、8位、16位、24位和32位。由于其结构简单、无损保存,BMP格式在图像处理、软件开发和计算机图形学中仍有重要应用。本文将全面解析BMP文件的结构、存储方式及特点。
BMP文件结构
一个BMP文件由四个主要部分组成:
- 文件头(Bitmap File Header):包含文件类型、大小和图像数据偏移等信息。
- 信息头(Bitmap Info Header):描述图像的尺寸、颜色深度、压缩类型等属性。
- 调色板(Color Palette):可选部分,用于索引颜色模式。
- 像素数据(Pixel Data):实际存储图像像素的字节序列。
文件头详解
文件头大小为14字节,包含以下字段:
- bfType(2字节):固定值'BM'(0x424D)。
- bfSize(4字节):文件总大小。
- bfReserved1/2(各2字节):保留,通常为0。
- bfOffBits(4字节):从文件头开始到像素数据的偏移量。
信息头详解
信息头有多个版本,最常见的是BITMAPINFOHEADER(40字节)。关键字段包括:
- biSize(4字节):信息头结构大小。
- biWidth/biHeight(各4字节):图像宽度和高度(像素)。高度为正表示自底向上存储。
- biPlanes(2字节):平面数,固定为1。
- biBitCount(2字节):每像素位数(1/4/8/16/24/32)。
- biCompression(4字节):压缩类型,常用BI_RGB(0)表示无压缩。
- biSizeImage(4字节):图像数据大小(可为0如果无压缩)。
- biXPelsPerMeter/biYPelsPerMeter(各4字节):水平/垂直分辨率。
- biClrUsed(4字节):实际使用的颜色数。
- biClrImportant(4字节):重要颜色数。
调色板
当biBitCount为1、4或8时,需要调色板。调色板是一个RGBQUAD数组,每个颜色条目由4字节(蓝、绿、红、保留)组成。颜色数由biClrUsed或2^biBitCount决定。
像素数据
像素数据按行存储,每行字节数需对齐到4字节边界。对于24位图,每像素3字节(BGR顺序);32位图每像素4字节(BGRA)。对于索引色,每字节对应调色板索引。行序通常从底部开始(当biHeight为正时)。
特点与应用
BMP的优点:无压缩无损耗,结构简单易读,支持透明通道(32位)。缺点:文件体积大,不支持广色域或压缩,不适合网络传输。应用场景包括:Windows壁纸、图标、位图资源、简单图像处理软件。
总结
尽管BMP格式效率较低,但其作为基础位图格式在编程教育和底层开发中仍具价值。理解BMP结构有助于深入掌握图像文件格式原理。