GIF逻辑屏幕宽度与PIL返回尺寸不符原因排查
GIF尺寸计算与PIL返回值差异的原因
你遇到的差异是两个问题导致的:
- 算术计算错误:你列的计算式
0x68 + 0x01 * 256结果应该是360(0x68对应十进制104,104+256=360),而非你算出的353。 - 字节顺序理解偏差:GIF文件的宽度、高度字段采用小端字节序存储,即低字节在前,高字节在后。对应你WinHex里的文件头:
- 宽度字段是偏移6-7的
68 01:低字节68(十进制104)在前,高字节01(十进制1)在后,正确计算为1*256 + 104 = 360 - 高度字段是偏移8-9的
40 01:低字节40(十进制64)在前,高字节01在后,正确计算为1*256 + 64 = 320
- 宽度字段是偏移6-7的
PIL加载GIF时,严格按照GIF标准读取逻辑屏幕尺寸,所以返回的(360, 320)是符合文件实际定义的正确尺寸,和正确计算的结果完全一致。
内容的提问来源于stack exchange,提问作者user19177303
相关产品推荐
相关产品推荐

