计算表面步幅
在未压缩的位图中,步幅为 从一行像素开始所需的字节数 到下一行的开头。
上述内容来自BITMAPINFOHEADER structure,绝对有道理。
同一网站提供了以下公式来计算步幅:
对于未压缩的RGB格式,最小步幅始终是图像 以字节为单位的宽度,向上舍入为最接近的DWORD。你可以使用 以下公式来计算步幅:
stride =((((biWidth * biBitCount)+ 31)& ~31)>> 3)
假设图像宽度为600,高度为800和1bpp
我希望步幅为600/8 = 75 ......但上面的公式给了我76!
我正在使用(w + 7) / 8
并获得预期的75 ...
仍然看到来自微软的上述公式让我怀疑 - 这个公式是否正确?
答案 0 :(得分:2)
75未向上舍入到最近的DWORD。 DWORD各占4个字节。 76是4的下一个最高倍数。
公式是正确的(在分割得到最终字节数之前,它以位为单位向上舍入到下一个DWORD)。你似乎只是四舍五入到最近的字节,这不是一回事。