在windows上的.bmp文件结构中,为什么"biSizeImage"不等于"width * height * (biBitCount / 8)"?
In the .bmp file structure on windows, why is "biSizeImage" not equal to "width * height * (biBitCount / 8)"?
我写了一个程序来读取.bmp 文件。这是此 .bmp 文件的信息:
再来一张测试图:
我发现 "biSizeImage" 不等于 "width * height * (biBitCount / 8)",为什么会这样?
根据BMP规范,每一行被填充到4字节的倍数。
在您的情况下,一行为 1190 像素,每个像素 3 个字节。原始大小为每行 3570 字节,因此四舍五入为 3572,是 4 的倍数。
从那里,您可以看到每行 3572 字节 × 685 行 = 2 446 820 字节,完全符合需要。
每个扫描线被填充为 4 字节的倍数。
在您的图像中,宽度为 1190 像素,每个像素占用 24 位/8 bits/byte = 3 个字节。这需要1190pixels/scanline * 3bytes/pixel = 3570bytes/scanline。该值四舍五入到每个扫描线 3572 字节,使其成为 4 字节的倍数。然后图像有 3572 字节/扫描线 * 685 扫描线 = 2446820 字节。
我写了一个程序来读取.bmp 文件。这是此 .bmp 文件的信息:
再来一张测试图:
我发现 "biSizeImage" 不等于 "width * height * (biBitCount / 8)",为什么会这样?
根据BMP规范,每一行被填充到4字节的倍数。
在您的情况下,一行为 1190 像素,每个像素 3 个字节。原始大小为每行 3570 字节,因此四舍五入为 3572,是 4 的倍数。
从那里,您可以看到每行 3572 字节 × 685 行 = 2 446 820 字节,完全符合需要。
每个扫描线被填充为 4 字节的倍数。
在您的图像中,宽度为 1190 像素,每个像素占用 24 位/8 bits/byte = 3 个字节。这需要1190pixels/scanline * 3bytes/pixel = 3570bytes/scanline。该值四舍五入到每个扫描线 3572 字节,使其成为 4 字节的倍数。然后图像有 3572 字节/扫描线 * 685 扫描线 = 2446820 字节。