bmp的编码格式:
Bmpfileiheader
BMP的文件信息: 文件开头的14个字节
WORD BMPId;BMP文件标志,其值固定为0x4d42,即“BM”
DWORD FileSize;BMP文件大小,以字节为单位
WORD Reserved1;BMP文件保留字,必须为0
WORD Reserved2;BMP文件保留字,必须为0
DWORD ImageOffset;图像数据的起始位置相对于文件开头的偏移量
DWORD ImageWidth;BMP图像宽度,以像素为单位
DWORD ImageHeight;BMP图像高度,以像素为单位
WORD EquipLevel;目标设备的级别(色彩平面数),固定为1
WORD BitsPerPixel;每个像素所需要的位数,1,4,8,24
DWORD EncodeType; 压缩类型,0(不压缩),1(BI_RLE8),2(BI_RLE4)
DWORD ImageSize; BMP位图大小,以字节为单位
DWORD XPixelPerMeter设备水平分辨率(每米像素数)
DWORD YPixelPerMeter设备垂直分辨率(每米像素数)
DWORD ColorUsed实际使用色彩数目,若为0,则由位数定
DWORD ColorImportant图像中重要的色彩数目。为0,表示调色板内所有的颜色都是重要的
调色板数据紧接在图像信息之后,用于说明位图的颜色,它有个表项,每个表项是个结构体,确定了一种颜色,每个结构体是由4个域组成:
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved 为0;
Bmpfileiheader
BMP的文件信息: 文件开头的14个字节
WORD BMPId;BMP文件标志,其值固定为0x4d42,即“BM”
DWORD FileSize;BMP文件大小,以字节为单位
WORD Reserved1;BMP文件保留字,必须为0
WORD Reserved2;BMP文件保留字,必须为0
DWORD ImageOffset;图像数据的起始位置相对于文件开头的偏移量
Bmpinfoheader 文件信息之后的40个字节
DWORD HeaderSize;BMP图像信息大小(40或12),以字节为单位DWORD ImageWidth;BMP图像宽度,以像素为单位
DWORD ImageHeight;BMP图像高度,以像素为单位
WORD EquipLevel;目标设备的级别(色彩平面数),固定为1
WORD BitsPerPixel;每个像素所需要的位数,1,4,8,24
DWORD EncodeType; 压缩类型,0(不压缩),1(BI_RLE8),2(BI_RLE4)
DWORD ImageSize; BMP位图大小,以字节为单位
DWORD XPixelPerMeter设备水平分辨率(每米像素数)
DWORD YPixelPerMeter设备垂直分辨率(每米像素数)
DWORD ColorUsed实际使用色彩数目,若为0,则由位数定
DWORD ColorImportant图像中重要的色彩数目。为0,表示调色板内所有的颜色都是重要的
调色板数据紧接在图像信息之后,用于说明位图的颜色,它有个表项,每个表项是个结构体,确定了一种颜色,每个结构体是由4个域组成:
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved 为0;
调色板中表项的个数由图像所使用的颜色数决定: 若不是真彩色图像,表项的个数与图像使用的颜色数相同, 每个表项对应了一种颜色(如00,FF,00,00表示纯绿色); 若图像为真彩色, 每个像素所占的位数BitsPerPixel=24,则 图像数据的每3个字节代表一个像素,这3个字节分别定义 了像素颜色中蓝、绿、红的亮度,因而就省去了调色板。
图像数据: 图像数据也叫位图阵列,它记录了图像的每一个像素值, 在生成图像文件时,Windows从图像的左下角开始(从左到 右,从下到上)逐行扫描图像,将图像的像素值一一记录下 来,这些记录像素的字节组成了图像数据(位图阵列)。 图像的宽度(以字节为单位)必须是4的倍数,倘若不到4的倍数则必须要用0补足。 虽然BMP的图像数据有BI_RLE8及BI_RLE4两种压缩格式,但 是使用的人却极少,几乎所有的BMP档都是采用没有压缩的 格式来储存图像数据。 当BitsPerPixel=1时,图像数据中的每个字节代表8个像素 当BitsPerPixel=4时,图像数据中的每个字节代表2个像素 当BitsPerPixel=8时,图像数据中的每个字节代表1个像素 当BitsPerPixel=24时,图像数据中的每3个字节代表1个像素