(一)BITMAPINFOHEADER 结构
typedef struct tagBITMAPINFOHEADER // bmih { DWORD biSize ; // size of the structure = 40 LONG biWidth ; // width of the image in pixels LONG biHeight ; // height of the image in pixels WORD biPlanes ; // = 1 WORD biBitCount ; // bits per pixel (1, 4, 8, 16, 24, or 32) DWORD biCompression ; // compression code DWORD biSizeImage ; // number of bytes in image LONG biXPelsPerMeter ; // horizontal resolution LONG biYPelsPerMeter ; // vertical resolution DWORD biClrUsed ; // number of colors used DWORD biClrImportant ; // number of important colors } BITMAPINFOHEADER, * PBITMAPINFOHEADER
字 段 名 |
大小 (单位: 字节) |
描 述 |
biSize |
4 |
本结构的大小,根据不同的操作系统而不同,在Windows中,此字段的值总为28h字节=40字节 |
biWidth |
4 |
BMP图像的宽度,单位像素 |
biHeight |
4 |
总为0 |
biPlanes |
2 |
总为0 |
biBitCount |
2 |
BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色 |
biCompression |
4 |
压缩方式,0表示不压缩,1表示RLE8压缩,2表示RLE4压缩,3表示每个像素值由指定的掩码决定 |
biSizeImage |
4 |
BMP图像数据大小,必须是4的倍数,图像数据大小不是4的倍数时用0填充补足 |
biXPelsPerMeter |
4 |
水平分辨率,单位像素/m |
biYPelsPerMeter |
4 |
垂直分辨率,单位像素/m |
biClrUsed |
4 |
BMP图像使用的颜色,0表示使用全部颜色,对于256色位图来说,此值为100h=256 |
biClrImportant |
4 |
重要的颜色数,此值为0时所有颜色都重要,对于使用调色板的BMP图像来说,当显卡不能够显示所有颜色时,此值将辅助驱动程序显示颜色 |
(二)BITMAPV4HEADER
来源:,Windows 95 更改了一些原始 BITMAPINFOHEADER 栏位的定义。Windows 95 也包括了一个称为 BITMAPV4HEADER 的新扩展的资讯表头。
typedef struct { DWORD bV4Size ; // size of the structure = 120 LONG bV4Width ; // width of the image in pixels LONG bV4Height ; // height of the image in pixels WORD bV4Planes ; // = 1 WORD bV4BitCount ; // bits per pixel (1, 4, 8, 16, 24, or 32) DWORD bV4Compression ; // compression code DWORD bV4SizeImage ; // number of bytes in image LONG bV4XPelsPerMeter ; // horizontal resolution LONG bV4YPelsPerMeter ; // vertical resolution DWORD bV4ClrUsed ; // number of colors used DWORD bV4ClrImportant ; // number of important colors DWORD bV4RedMask ; // Red color mask DWORD bV4GreenMask ; // Green color mask DWORD bV4BlueMask ; // Blue color mask DWORD bV4AlphaMask ; // Alpha mask DWORD bV4CSType ; // color space type CIEXYZTRIPLE bV4Endpoints ; // XYZ values DWORD bV4GammaRed ; // Red gamma value DWORD bV4GammaGreen ; // Green gamma value DWORD bV4GammaBlue ; // Blue gamma value } BITMAPV4HEADER, * PBITMAPV4HEADER ;
注意前 11 个栏位与 BITMAPINFOHEADER 结构中的相同,後 5 个栏位支援Windows 95 和 Windows NT 4.0 的图像颜色调配技术。除非使用 BITMAPV4HEADER
结构的後四个栏位,否则您应该使用 BITMAPINFOHEADER(或 BITMAPV5HEADER)。当 bV4Compression 栏位等於 BI_BITFIELDS 时, bV4RedMask、 bV4GreenMask和 bV4BlueMask 可 以 用 於 16 位 元 和 32 位 元 DIB 。 它 们 作 为 定 义 在BITMAPINFOHEADER 结构中的颜色遮罩用於相同的函式,并且当使用除了明确的结构栏位之外的原始结构时,它们实际上出现在 DIB 档案的相同位置。就我所知,bV4AlphaMask 栏位不被使用。
(三)BITMAPV5HEADER
为 Windows 98 和 Windows NT 5.0(即 Windows 2000)编写的程式能使用拥有新的 BITMAPV5HEADER 资讯结构的 DIB:
typedef struct { DWORD bV5Size ; // size of the structure = 120 LONG bV5Width ; // width of the image in pixels LONG bV5Height ; // height of the image in pixels WORD bV5Planes ; // = 1 WORD bV5BitCount ; // bits per pixel (1,4,8,16,24,or32) DWORD bV5Compression ; // compression code DWORD bV5SizeImage ; // number of bytes in image LONG bV5XPelsPerMeter ; // horizontal resolution LONG bV5YPelsPerMeter ; // vertical resolution DWORD bV5ClrUsed ; // number of colors used DWORD bV5ClrImportant ; // number of important colors DWORD bV5RedMask ; // Red color mask DWORD bV5GreenMask ; // Green color mask DWORD bV5BlueMask ; // Blue color mask DWORD bV5AlphaMask ; // Alpha mask DWORD bV5CSType ; // color space type CIEXYZTRIPLE bV5Endpoints ; // XYZ values DWORD bV5GammaRed ; // Red gamma value DWORD bV5GammaGreen ; // Green gamma value DWORD bV5GammaBlue ; // Blue gamma value DWORD bV5Intent ; // rendering intent DWORD bV5ProfileData ; // profile data or filename DWORD bV5ProfileSize ; // size of embedded data or filename DWORD bV5Reserved ; } BITMAPV5HEADER, * PBITMAPV5HEADER ;
时间: 2024-11-10 00:13:38