BMP是一种与硬件设备无关的图像文件格式,采用位映射存储格式。BMP文件的图像深度可选1bit、4bit、8bit及24bit。位图数据记录了位图的每一个像素值或该对应像素的颜色表的索引值,BMP文件存储位图数据时,图像的扫描方式是在行内按从左到右扫描、在行间从下到上扫描的顺序。Windows规定图像文件中,一个图像的扫描行所占的字节数必须是4的倍数(即以字为单位),不足的以0填充!
biWidth:图象的宽度,单位是象素
biBitCount:每个像素所需的位数,常用的值为1(黑白二色图), 4(16色图), 8(256色), 24(真彩色图)
biBitCount = 1,8个像素占1个字节;
biBitCount = 4,2个像素占1个字节;
biBitCount = 8,1个像素占1个字节;
biBitCount = 24,1个像素占3个字节;
对于BMP等位图来说,要求是4字节对齐,即每行字节数必须为4的整数倍,因此满足以4字节为对齐单位向下对齐,所以每行字节数为:(8Bit = 1Byte)
PerLineBytes = (((biWidth * biBitCount) / 8 + 3) / 4) * 4
当BMP图位宽不足 8 时,多个像素才占用 1Byte,因此可以将除8外移,同时因为字节数必须为4的整数倍,3 * 8需变成31,则行字节数为:
PerLineBytes = (((biWidth * biBitCount) + 31) / 32) * 4