我是这个领域的新手,我对某些术语感到困惑!
bisizeimage , bisize 和 bfsize !
请给我一个简单的定义,如果有方程式来计算它们呢?
bisizeimage bisize bfsize bitmapinfoheader bitmapfileheader
编辑:(“由 friend 回答”)
biSize > The number of bytes required by the structure. (what is the structure exactly ?)
The structure is the struct BITMAPINFOHEADER. That is a fixed value.
biSizeImage>图像的大小(以字节为单位)。
bfSize>位图文件的大小(以字节为单位)。
(图像和位图文件有什么区别?)
biSizeImage is the whole image size, bfSize is the same, but you have to add the size of the 2 header files.
最佳答案
@Roman Abashin的回答有一个轻微但重要的错误。 biSize不是两个 header 的组合大小。
biSize是BITMAPINFOHEADER仅的大小。它是40个字节。
biSize = 40
这两个 header 的总大小实际上是 bfOffBits (您可以将“Off”看作是指实际位图与 header 开头之间的偏移量-请记住,位图紧随 header 之后)。
bfOffBits = 54
因此,以下所有都是 bfSize 的正确公式:
bfSize = biSizeImage + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)
bfSize = biSizeImage + sizeof(BITMAPFILEHEADER) + biSize
bfSize = biSizeImage + 14 + 40
bfSize = biSizeImage + 54
bfSize = biSizeImage + bfOffbits
@Roman Abashin的biSizeImage公式(实际位图的大小)对于24位位图是正确的。
令人困惑的是,biSize,bfOffBits,bfSize和biSizeImage都以字节为单位,而
biWidth和biHeight以像素为单位。每个像素的字节数在 header 的biBitCount部分中定义。对于24位位图,它是3个字节(或24位)。
请注意,bfOffBits的单位以字节为单位,biBitCount的单位以位为单位。
可以在Microsoft的页面上找到更多详细信息:
Info on BITMAPFILEHEADER
Info on BITMAPINFOHEADER
编辑:我在下面的位图概述中添加了一些注释,以进一步阐明事物
编辑:将biSizeImage + 24(等)更改为+ 14。
关于bitmap - bisizeimage,bisize和bfsize有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713117/