Я пытаюсь изменить dpi моих изображений PNG и преобразовать их в TIFF, используя Pillow / PIL, например,
from PIL import Image
import os
for fl in os.listdir(os.getcwd()):
name, ext = fl.split(".")
im = Image.open(fl)
im.save(name + ".tiff", dpi=(500,500), compression="tiff_jpeg")
print("Done '{}'".format(name))
который отлично работает, если compression
kwarg не установлен, но я получаю огромные файлы TIFF размером 100 МБ из моих PNG размером 1 МБ. Если я установил для типа сжатия любой из доступных параметров, я получаю следующую ошибку:
Traceback (most recent call last):
File "<ipython-input-1-3631f05e05f4>", line 7, in <module>
im.save(name + ".tiff", dpi=(500,500), compression="tiff_jpeg")
File "C:\Users\Patrick\Anaconda3\lib\site-packages\PIL\Image.py", line 1687, in save
save_handler(self, fp, filename)
File "C:\Users\Patrick\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py", line 1457, in _save
raise IOError("encoder error %d when writing image file" % s)
OSError: encoder error -2 when writing image file
В документации для Image.save в нем упоминается, что сжатие доступно только в том случае, если установлена библиотека libtiff, которая у меня есть.
Вот версии Python и Pillow, с которыми я работаю:
Python 3.5.1 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)] on win32
libtiff: 4.0.6-vc14_2 [vc14]
pillow: 3.2.0-py35_1
В чем может быть причина этой ошибки и что я могу предпринять для ее устранения? Я впервые использовал Pillow / PIL и не знаю, с чего начать.