在写作业的时候对这三者区别感到困惑,网上没找到详细的区别介绍。
下面介绍可以参考下。
bfSize是位图图像的完整文件大小,位图图像的文件大小由两部分组成:
一个报头部分(与关于文件的一般信息= bfOffBits)
和图像部分(存储像素信息的位置= biSizeImage)
因此,我们有以下结构
bfSize = bfOffBits + biSizeImage;
此外,bfOffBits(标题部分) 可以进一步细分为
一个文件头和
信息头(biSize)
因此,它也可以写成
bfSize = 14 + 40 + biSizeImage
要么
bfSize = 54 + biSizeImage
然而,这将是不好的做法,因为硬编码的“魔术数字”通常是不受欢迎的。
但是让我们来看看biSizeImage。一般来说,图像本身的文件大小由颜色深度 * 宽度 * 高度组成。24位BMP中的颜色深度为每像素3个字节(蓝色,绿色,红色分别为0-255个值) - 所谓的RGB三元组。专家的其他信息:三种颜色的值按蓝色,绿色,红色的顺序保存 - 搜索关键字LittleEndianness以获取有关该主题的更多信息。如果图像的宽度不能除以4个字节,则BMP标准还会将0添加为填充。
正如其他人指出的那样,稍微容易混淆,你现在必须将像素的大小乘以字节深度。因此,我们有
biSizeImage = (biWidth * sizeof(RGBTRIPLE) + padding) * abs(biHeight)
这将为您提供图像的最终字节大小。
所以,得出结论:
biSizeImage = BMP 图像部分的文件大小(以字节为单位)
biSize = BMP头的info头部分的文件大小(以字节为单位)
bfsize =完整BMP的文件大小(以字节为单位)(包括标题和图像本身)
希望能有助于理解,(https原文链接)