Python “如何调试”;O错误:-9“;通过libtiff和枕头来保存tiff?

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):

我有一个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):
    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(...)