c++读取位图文件的细节问题
我在读取c语言位图文件类中,有这样一段代码
/** 确保读取数据的大小 */
if(bitmapInfoHeader.biSizeImage == 0)
{
bitmapInfoHeader.biSizeImage = bitmapInfoHeader.biWidth *
bitmapInfoHeader.biHeight * 3;
}
我不太清楚biSizeImage 是用来干什么?后面*3又是为什么?
[解决办法]
biSizeImage 图片占用的内存字节数,这个写法应该有点问题,因为win的图片内存字节数应该是4的倍数
*3是因为每个像素为红绿蓝三色,每色一个字节
bitmapInfoHeader.biWidth * bitmapInfoHeader.biHeight
长方向乘宽方向的像素数量,再乘3,总共需要多少存储字节
[解决办法]
应该是这样((biWidth * 3 + 31) / 32) * 4 * biHeight