您的位置:首页 > 编程语言 > C语言/C++

BMP头文件格式以及C语言读取头文件(一)

2011-07-23 19:46 211 查看
BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />位图文件主要分为如下3个部分:
块名称对应Windows结构体定义大小(Byte)
文件信息头BITMAPFILEHEADER14
位图信息头BITMAPINFOHEADER40
RGB颜色阵列BYTE*由图像长宽尺寸决定
1、 文件信息头BITMAPFILEHEADER结构体定义如下:typedef struct tagBITMAPFILEHEADER {WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;} BITMAPFILEHEADER;其中:‍‍
bfType说明文件的类型,该值必需是0x4D42,也就是字符'BM'。
bfSize说明该位图文件的大小,用字节为单位
bfReserved1保留,必须设置为0
bfReserved2保留,必须设置为0
bfOffBits说明从文件头开始到实际的图象数据之间的字节的偏移量。这个参数是非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化,所以你可以用这个偏移值迅速的从文件中读取到位数据。
2、位图信息头BITMAPINFOHEADER结构体定义如下:typedef struct tagBITMAPINFOHEADER {DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;} BITMAPINFOHEADER;其中:
biSize说明BITMAPINFOHEADER结构所需要的字数。
biWidth说明图象的宽度,以象素为单位。
biHeight说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是时,高度值是一个正数。
biPlanes为目标设备说明位面数,其值将总是被设为1。
biBitCount说明比特数/象素,其值为1、4、8、16、24、或32。但是由于我们平时用到的图像绝大部分是24位和32位的,所以我们讨论这两类图像。
biCompression说明图象数据压缩的类型,同样我们只讨论没有压缩的类型:BI_RGB。
biSizeImage说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0。
biXPelsPerMeter说明水平分辨率,用象素/米表示。
biYPelsPerMeter说明垂直分辨率,用象素/米表示。
biClrUsed说明位图实际使用的彩色表中的颜色索引数(设为0的话,则说明使用所有调色板项)。
biClrImportant说明对图象显示有重要影响的颜色索引的数目,如果是0,表示都重要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: