正确的BITMAP步幅公式

时间:2015-01-20 16:01:57

标签: c++ bitmap stride

  

计算表面步幅

     

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

上述内容来自BITMAPINFOHEADER structure,绝对有道理。

同一网站提供了以下公式来计算步幅:

  

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

     

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

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

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

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

仍然看到来自微软的上述公式让我怀疑 - 这个公式是否正确?

1 个答案:

答案 0 :(得分:2)

75未向上舍入到最近的DWORD。 DWORD各占4个字节。 76是4的下一个最高倍数。

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