如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
位图图像格式的说明Windows的BMP文件由文件头BITMAPFILEHEADER、位图信息头BITMAPINFOHEADER、调色板Palette(颜色信息)、实际的位图数据ImageData四部分组成。其中,文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息;位图信息头包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息。颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。实际位图数据则根据两种头文件和颜色信息表示特定的颜色。需要注意:1、文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数。注意有时候,图像的像素值在文件中的存放顺序为从左到右,从下到上。(这里我看到有的资料说都是这么存,但是我看msdn是说根据BITMAPINFOHEADER的biHeight属性的正负决定是Top-down,还是bottom-up)。第一部分位图文件头Msdn中的结构:typedefstructtagBITMAPFILEHEADER{WORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;}BITMAPFILEHEADER;各字段意思:bfType:指定文件类型,必须是BMbfSize:以byte为单位指定BMP文件的大小bfReserved1和bfReserved2是保留字段必须设置为0;bfOffBits:为从文件头到实际的位图数据的偏移字节数;即前三部分大小之和第二部分位图信息头typedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes;WORDbiBitCountDWORDbiCompression;DWORDbiSizeImage;LONGbiXPelsPerMeter;LONGbiYPelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER;这个结构的长度是固定的,为40个字节各字段意思:biSize:指定这个结构的长度,为40。BiWidth:指定图象的宽度,单位是象素。BiHeight:指定图象的高度,单位是象素。若为正则图像为bottom-upDIB,原点在做下角若为负,在图像为top-downDIB,原点在左上角BiPlanes:必须是1,不用考虑。biBitCount:指定表示颜色时要用到的位数,常用的值为1(黑白二色图),4(16色图),8(256色),24(真彩色图)32BiCompression:指定位图是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS(都是一些Windows定义好的常量)。要说明的是,Windows位图可以采用RLE4,和RLE8的压缩格式,但用的不多。我们今后所讨论的只有第一种不压缩的情况,即biCompression为BI_RGB的情况。BiSizeImage:指定实际的位图数据占用的字节数。如果biCompression为BI_RGB,则该项可能为零。(由msdn因为是可以计算的,所以ThismaybesettozeroforBI_RGBbitmaps)BiYPelsPerMeter:指定目标设备的垂直分辨率,单位同上。BiClrUsed:指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2biBitCount。第1章Windows位图和调色板——吕凤军BiClrImportant:指定表示bmp所需要的颜色种类数,若为0则表示所有的颜色都需要。第三部分调色板当然,这里是对那些需要调色板的位图文件而言的。有些位图,如真彩色图,前面已经讲过,是不需要调色板的,BITMAPINFOHEADER后直接是位图数据。调色板实际上是一个数组,共有biClrUsed个元素(如果该值为零,则有个元素)。数组中每个元素的类型是一个RGBQUAD结构:typedefstructtagRGBQUAD{BYTErgbBlue;//该颜色的蓝色分量BYTErgbGreen;//该颜色的绿色分量BYTErgbRed;//该颜色的红色分量BYTErgbReserved;//保留值}RGBQUAD;各字段的意思:rgbBlue