24位位图文件格式分析1
(2010-09-16 16:05:45)
标签:
杂谈 |
分类: 数字图像处理 |
做了一个很简单的位图文件格式分析的小程序:
首先当然要弄清楚位图的格式啦。。
原理简介:
24位位图文件主要分为如下3个部分:
块名称 |
对应Windows结构体定义 |
大小(Byte) |
文件信息头 |
BITMAPFILEHEADER |
14 |
位图信息头 |
BITMAPINFOHEADER |
40 |
RGB颜色阵列 |
BYTE* |
由图像长宽尺寸决定 |
1、文件信息头BITMAPFILEHEADER
结构体定义如下:
typedef
UINT
DWORD
UINT
UINT
DWORD
bfType |
说明文件的类型,该值必需是0x4D42,也就是字符'BM'。 |
bfSize |
说明该位图文件的大小,用字节为单位 |
bfReserved1 |
保留,必须设置为0 |
bfReserved2 |
保留,必须设置为0 |
bfOffBits |
说明从文件头开始到实际的图象数据之间的字节的偏移量。这个参数是非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化,所以你可以用这个偏移值迅速的从文件中读取到位数据。 |
2、位图信息头BITMAPINFOHEADER
结构体定义如下:
typedef
DWORD
LONG
LONG
WORD
WORD
DWORD
DWORD
LONG
LONG
DWORD
DWORD
}
其中:
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,表示都重要。 |