对于
stride参数,您需要提供以字节为单位的行大小。您的像素均为16位,因此您可能会天真地假设
stride =2*bmpinfo['bmWidth'];不幸的是,Windows添加了填充以使步幅达到32位的偶数倍。这意味着您必须将其舍入到4的下一个最高倍数
stride= (stride + 3) / 4) * 4。
该文档没有提到16位原始格式,因此您必须检查Unpack.c模块以查看可用的格式。
您会注意到的最后一件事是Windows喜欢将其位图倒置。
编辑:
您最后的小问题很容易解释-从16位到24位的转换没有精确定义,并且两次不同转换之间的一对一差异是完全正常的。转换完数据后,调整数据并不难,因为我确信差异基于值是恒定的。



