(转)Windows规定一个扫描行所占的字节数必须是4的倍数,不足4的倍数则要对其进行扩充。假设图像的宽为biWidth个像素、每像素biBitCount个比特,其一个扫描行所占的真实字节数的计算公式如下:
DataSizePerLine = (biWidth * biBitCount /8+ 3) / 4*4
那么,不压缩情况下位图数据的大小(BITMAPINFOHEADER结构中的biSizeImage成员)计算如下:
biSizeImage = DataSizePerLine * biHeight
也就是说bmp扫描行所占的真实字节数一定是4的倍数,在C++中我们可以这样做预定义
WIDTHBYTES(bits) (((bits)+31)/32*4)
bits=width* bitInfoHead.biBitCount
这样就能做到了