gpt4 book ai didi

c++ - 如何计算位图大小?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:08 25 4
gpt4 key购买 nike

开始开发专门针对 Windows 的屏幕捕获软件。在 MSDN 上查看 Capturing an Image 的示例时我发现自己有点困惑。

当我提到的位图大小时不包括与实际文件关联的标题等,请记住。我说的是原始像素数据。我本以为公式应该是 (width*height)*bits-per-pixel。但是,根据示例,这是计算大小的正确方法:

DWORD dwBmpSize = ((bmpScreen.bmWidth * bi.biBitCount + 31) / 32) * 4 * bmpScreen.bmHeight;

和或:((width*bits-per-pixel + 31)/32) * 4 * height

我不明白为什么会有涉及31324 的额外计算。也许填充?我不确定,但任何解释将不胜感激。我已经尝试过谷歌搜索,但没有找到任何特别有用的结果。

最佳答案

代表位图像素的位被打包成行。每行的大小通过填充向上取整为 4 字节的倍数(32 位 DWORD)。

(bits_per_row + 31)/32 * 4 确保舍入到下一个 32 位的倍数。答案是以字节为单位,而不是以位为单位,因此 *4 而不是 *32。

参见:https://en.wikipedia.org/wiki/BMP_file_format

关于c++ - 如何计算位图大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48957742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com