【问题标题】:Correct stride formula for BITMAPBITMAP 的正确步幅公式
【发布时间】:2015-03-18 22:43:02
【问题描述】:

计算表面步幅

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

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

同一网站给出了以下计算步幅的公式:

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

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

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

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

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

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

【问题讨论】:

    标签: c++ bitmap stride


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我没有意识到!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多