准备知识:
位:"位(bit)"是电子计算机中最小的数据单位。每一位的状态只能是0或1,是计算机处理、存储、传输数据时使用的二进制格式。
字节:8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
像素:
位图的一个像素值所占的字节数:
当biBitCount=1时,8个像素占1个字节;
当biBitCount=4时,2个像素占1个字节;
当biBitCount=8时,1个像素占1个字节;
当biBitCount=24时,1个像素占3个字节,此时图像为真彩色图像。
即:1个像素所占的字节数是biBitCount/8
解决:
Windows规定图像文件中一个扫描行所占的字节数必须是4的倍数(即以字为单位),不足的以0填充,图像文件中一个扫描行所占的字节数计算方法:
( biWidth*biBitCount+31)/32*4 一个扫描行所占的字节数
biWidth 是图像的宽度以像素为单位,
biBitCount 是每个像素的位数,
biWidth*biBitCount 是一行所占的位数
( biWidth*biBitCount+31) 把不满4字节的补满,使最终结果得出来的位数只会比原来的多(结尾有余数,不满4字节),或者不变(刚好以4个字节(32位)结束)
( biWidth*biBitCount+31)/32 分成一块块4字节(32位)
( biWidth*biBitCount+31)/32*4 前面对齐4字节结束。得出字节总和