1

一开始对我的英语感到抱歉。

我的目的是从位图中加载 rgb 数组。但是图像的大小和高度 * 宽度 * 3 的乘积之间存在差异。当我阅读 bmp 格式时,我注意到当 widht % 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 位标题)。我必须做什么才能正确阅读?(标题已正确加载)

4

1 回答 1

4

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

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

但是,如果您的行宽只有 800 像素,那么每行有 800*3=2440 字节,这已经是 4 字节的倍数,因此不会有额外的填充字节,位图大小将为 601*2400=1442400 字节。对于 54 字节的标头,这给出了 1442454 字节。

结论:您的图像尺寸实际上是 801 x 600,而不是 801 x 601。

于 2012-07-22T21:24:04.717 回答