Python “如何调试”;O错误:-9“;通过libtiff和枕头来保存tiff?
我有一个TIFF文件,我不能用枕头处理。我知道pillow是libtiff的用户,但错误消息不足以调试问题:Python “如何调试”;O错误:-9“;通过libtiff和枕头来保存tiff?,python,python-imaging-library,Python,Python Imaging Library,我有一个TIFF文件,我不能用枕头处理。我知道pillow是libtiff的用户,但错误消息不足以调试问题: image = PIL.Image.open(open("input.tif", "rb")) image.save("out.tiff") 我立即得到以下(截断的)回溯: PIL/Image.py in _ensure_mutable(self) 616 def _ensure_mutable(self):
image = PIL.Image.open(open("input.tif", "rb"))
image.save("out.tiff")
我立即得到以下(截断的)回溯:
PIL/Image.py in _ensure_mutable(self)
616 def _ensure_mutable(self):
617 if self.readonly:
--> 618 self._copy()
619 else:
620 self.load()
PIL/Image.py in _copy(self)
609
610 def _copy(self):
--> 611 self.load()
612 self.im = self.im.copy()
613 self.pyaccess = None
PIL/TiffImagePlugin.py in load(self)
1055 def load(self):
1056 if self.tile and self.use_load_libtiff:
-> 1057 return self._load_libtiff()
1058 return super().load()
1059
PIL/TiffImagePlugin.py in _load_libtiff(self)
1159
1160 if err < 0:
-> 1161 raise OSError(err)
1162
1163 return Image.Image.load(self)
OSError: -9
提高操作错误(err)
在最后一步中,导致操作错误:-1。您可以查看PIL/TiffImagePlugin.py中\u load\u libtiff(self)
的源代码,并检查导致err=-9
的条件。错误是否发生在PIL.Image.open
或Image.save
期间?如果是open
,您可以尝试直接使用Image.open(“input.tif”)
,而不是先使用Python的open
函数。如果是保存
,您确定您有写入该目录的权限吗。另外,您确定该文件只包含一个图像吗?Tiff文件可以包含多个“页面”。@nikrasmertsch-调用保存时出错
-我更新了问题以使其更清楚。我道歉。该文件确实包含多个页面。所讨论的代码“适用于”某些多页tiff文件,而不适用于其他文件。我不确定它是否与标签相关,是否与压缩相关,等等<代码>错误可以由三行中的一行返回。如果它的可复制性足以在函数的前面设置断点,那么单步执行(并进入单个函数;即使它调用了C函数,也可以让您检查该C函数的文档)可能会很有趣。我无法帮助您解决与tiff相关的问题,也许调试器可以帮助您,就像Charles建议的那样。你可以将图像保存为其他格式(例如png)吗?也许你可以共享TIFF,以便其他人可以尝试?
decoder = Image._getdecoder(
self.mode, "libtiff", tuple(args), self.decoderconfig
)
...
...
decoder.decode(...)