使用Python的PIL加载TIFF图片导致内核重启问题
TIFF文件加载导致Python内核崩溃的解决办法
问题描述
使用PIL加载libtiff提供的zackthecat.tif测试文件时,执行代码后无报错但Python内核直接重启。环境为Windows 10、Python 3.11.7、IPython 8.20.0,已尝试Spyder、Jupyter Notebook,安装/降级libtiff、imagecodecs均无效,matplotlib、fabio等库加载同样失败。
排查与解决步骤
- 确认文件特性:该测试文件为32位浮点型TIFF,部分Python图像处理库对这类特殊格式的内存处理存在缺陷,易引发内存溢出导致内核崩溃。
- 使用
python-libtiff直接读取:
安装库后执行以下代码:from libtiff import TIFF import numpy as np tif = TIFF.open('zackthecat.tif', mode='r') im = tif.read_image() # 多页文件用 tif.read_images() 获取全部页面 - 分块读取避免内存过载:对于大尺寸或特殊格式TIFF,不要一次性加载整个文件,采用逐行或分块读取的方式降低内存占用。
- 匹配依赖库版本:Python 3.11需搭配适配版本的
imagecodecs(推荐2023.1.23及以上),确保库与Python版本兼容。 - 尝试GDAL库读取:GDAL对复杂TIFF格式支持更完善,安装后用以下代码:
from osgeo import gdal ds = gdal.Open('zackthecat.tif') im = ds.ReadAsArray() - 验证文件完整性:重新下载测试文件,排除文件损坏引发的读取异常。
内容的提问来源于stack exchange,提问作者Alexos
相关产品推荐
相关产品推荐

