BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜等信息。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
位图文件主要分为如下3个部分:
块名称
对应Windows结构体定义
大小(Byte
文件信息头
BITMAPFILEHEADER
14
位图信息头
BITMAPINFOHEADER
40
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结构所需要的字数。一般是40
biWidth
说明图象的宽度,以象素为单位。
biHeight
说明图象的高度,以象素为单位。注:这个值除了用于描述图像的高度之外,它还有另一个用处,就是指明该图像是倒向的位图,还是正向的位图。如果该值是一个正数,说明图像是倒向的,如果该值是一个负数,则说明图像是正向的。大多数的BMP文件都是倒向的位图,也就是说高度值是一个正数。
sizeof结构体大小
biPlanes
为目标设备说明位面数,其值将总是被设为1
biBitCount
说明比特数/象素,其值为1481624、或32。但是由于我们平时用到的图像绝大部分是24位和32位的,所以我们讨论这两类图像。 24表示一个像素占三个字节。
biCompression
说明图象数据压缩的类型,同样我们只讨论没有压缩的类型:BI_RGB
biSizeImage
说明图象的大小,以字节为单位。当用BI_RGB格式时,可设置为0biSizeImage = biWidth * biHeight (但是此处的biWidth必须是4的倍数,比如biWidth =240,则可仍然是240,但是若biWidth = 241 ,则取biWidth = 244.
biXPelsPerMeter
说明水平分辨率,用象素/米表示。
biYPelsPerMeter
说明垂直分辨率,用象素/米表示。
biClrUsed
说明位图实际使用的彩表中的颜索引数(设为0的话,则说明使用所有调板项)。
biClrImportant
说明对图象显示有重要影响的颜索引的数目,如果是0,表示都重要。
sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + biSizeImage = bfSize
比如一幅图像的占用的存储空间是1729590. 则它的组成是:BITMAPINFOHEADER结构所需要的字数 40 BITMAPFILEHEADER这个结构所占的字节数14;真正的图像大小1729536.所以 40 + 14 + 1729536 = 1729590

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。