2

计算表面步幅

在未压缩的位图中,步幅是从一行像素的开头到下一行的开头所需的字节数。

以上来自BITMAPINFOHEADER 结构,绝对有意义。

同一站点给出了以下公式来计算步幅:

对于未压缩的 RGB 格式,最小步幅总是以字节为单位的图像宽度,四舍五入到最接近的 DWORD。您可以使用以下公式来计算步幅:

步幅 = ((((biWidth * biBitCount) + 31) & ~31) >> 3)

假设图片宽度为 600,高度为 800,1bpp

我预计步幅为 600/8 = 75 ......但上面的公式给了我 76 !

我正在使用(w + 7) / 8并获得预期的 75 ......

仍然看到上面来自 Microsoft 的公式让我感到疑惑 - 该公式是否正确?

4

1 回答 1

2

75 不四舍五入到最接近的 DWORD。每个 DWORD 为 4 个字节。76 是 4 的下一个最高倍数。

该公式是正确的(在除以得到最终字节数之前,它会向上舍入到下一个 DWORD 位)。您似乎只是四舍五入到最接近的字节,这不是一回事。

于 2015-01-20T16:08:01.363 回答