一开始,对不起我的英语。

我的目的是从位图加载rgb数组。但是图像的大小和高度*宽度* 3的乘积之间存在差异。当我阅读有关bmp格式的文章时,我注意到当%4等于!= 0时,我必须将宽度增加一些位数以达到平衡。 (width%4 == 1,我必须加3,width%4 == 2,我必须加2,依此类推)
图像的大小为1 442 454字节,高度为601,宽度为801。
804 * 600 * 3 == 1 441 800,它大于图像的大小。
801 * 600 * 3 == 1441800,它必须小于图像的大小(即使添加54位 header 也是如此)。我必须怎么做才能正确阅读它? (标题已正确加载)

最佳答案

请注意,每一行都填充为4字节的倍数(不是像素)。

因此,如果每行有801个像素,每个像素是3字节(RGB),则每行有801 * 3 = 2403字节,并且将用一个额外的字节填充到2404字节。因此,位图大小将为601 * 2404 = 1444804字节。

但是,如果行宽度仅为800像素,则每行有800 * 3 = 2440字节,这已经是4字节的倍数,因此将没有其他填充字节,并且位图大小将为601 * 2400 = 1442400字节。对于54字节的 header ,这将提供1442454字节。

结论:您的图片大小实际上是801 x 600,而不是801 x 601。

09-27 11:39