bitmap - bisizeimage,bisize和bfsize有什么区别?

标签 bitmap

我是这个领域的新手,我对某些术语感到困惑!
bisizeimage bisize bfsize !
请给我一个简单的定义,如果有方程式来计算它们呢?

编辑:(“由 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/

相关文章:

java - 在 Android ListView 中,加载圆形图像和文本的正确方法是什么?

c# - 将二维数组转换为位图图像。 C#

Java openCV - 将位图转换为 Mat 时出错

android - CannyEdgeDetector 使用位图给出堆栈溢出

android - 如何从编辑文本中的可滚动内容创建位图图像?

java - 在屏幕中将耗时显示为 Score java libgdx

c# GDI+ 中的外部异常

delphi - 如何更改 32 位 TBitmap 中特定颜色的 alpha 值?

android - 使用 BitmapRegionDecoder 加载的图像在模拟器上没问题,但在设备上太大

c# - 如何在 .NET 中使用大位图?