python ПИЛ Подушка: сохранить изображение внезапно не работает - PullRequest
0 голосов
/ 23 января 2020

Я использую библиотеку Pillow (PIL.Image) в Anaconda Jupyter Notebook, чтобы открыть изображение tif, разделить его на несколько страниц и сохранить изображение. Это работало на прошлой неделе. Однако на этой неделе неожиданно возвращается ошибка ОС.

Мой код выглядит следующим образом:

img = Image.open(file_url)
for i in range(img.n_frames): ## split multi-page tif
    print(i+1)
    try:
        img.seek(i)
        img.save('page_%s.tif'%(i,))
    except EOFError:
        break

И теперь я получаю эту ошибку:

> --------------------------------------------------------------------------- OSError                                   Traceback (most recent call
> last) <ipython-input-5-55bb7e23c7a6> in <module>
>       5     try:
>       6         img.seek(i)
> ----> 7         img.save('page_%s.tif'%(i,))
>       8     except EOFError:
>       9         break
> 
> ~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\Image.py in
> save(self, fp, format, **params)    2066     2067         # may mutate
> self!
> -> 2068         self._ensure_mutable()    2069     2070         save_all = params.pop("save_all", False)
> 
> ~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\Image.py in
> _ensure_mutable(self)
>     587     def _ensure_mutable(self):
>     588         if self.readonly:
> --> 589             self._copy()
>     590         else:
>     591             self.load()
> 
> ~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\Image.py in
> _copy(self)
>     580 
>     581     def _copy(self):
> --> 582         self.load()
>     583         self.im = self.im.copy()
>     584         self.pyaccess = None
> 
> ~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\TiffImagePlugin.py
> in load(self)    1068     def load(self):    1069         if
> self.use_load_libtiff:
> -> 1070             return self._load_libtiff()    1071         return super().load()    1072 
> 
> ~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\TiffImagePlugin.py
> in _load_libtiff(self)    1180     1181         if err < 0:
> -> 1182             raise OSError(err)    1183     1184         return Image.Image.load(self)
> 
> OSError: -2

У меня есть проверил что библиотека Pillow самая новая версия Добавление типа файла сделает кластер бесконечно занятым, но на самом деле не сохраняет изображение.

1 Ответ

0 голосов
/ 23 января 2020

Не уверен, что случилось с библиотекой с прошлой недели, но я нашел решение, переустановив заново ...

Используйте "python -m pip install Pillow" вместо "pip install Pillow". а затем перезапустите ноутбук Jupyter и ноутбук.

...