You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PIL保存大尺寸uint32类型TIFF图片报‘L’ format错误的解决方法

问题原因

报错本质是经典TIFF格式的32位偏移量限制。经典TIFF用32位无符号整数存储文件内数据偏移,最大支持4GB的文件大小。你的38000×38000 uint32图像总字节数为:
38000 * 38000 * 4 = 5,776,000,000 字节(约5.7GB),超过了32位无符号整数的最大值(4,294,967,295字节),导致PIL在计算数据偏移时溢出,触发struct.error。

30000×30000的图像总大小为3.6GB,未超过4GB阈值,所以能正常保存。

解决方案

直接使用BigTIFF格式保存,它支持64位偏移量,可处理远超4GB的文件。Pillow(PIL的分支)从较新版本开始支持BigTIFF,只需在save时指定格式参数:

修改后的代码

import numpy
from PIL import Image

resLabels = numpy.ndarray(shape=(38000, 38000), dtype=numpy.int32)
resLabels.fill(0)
resLabels[0,0] = 10000000
arr = resLabels.astype("uint32")
im = Image.fromarray(arr)
# 指定保存为BigTIFF格式
im.save("Test.tif", format="TIFF", bigtiff=True)

额外注意事项

  • 确保你的Pillow版本≥9.1.0(更早版本对BigTIFF支持不完善),可通过pip install --upgrade pillow升级。
  • 打开BigTIFF文件需要支持该格式的工具(如ImageMagick、GIMP 2.10+或最新版Photoshop),部分旧图像查看器可能不兼容。

内容的提问来源于stack exchange,提问作者FiReTiTi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 10:22:35