Об ошибке PIL - IOError: декодер недоступен

Я получаю:

IOError: decoder zip not available

когда я пытаюсь сделать изображение и сохранить в jpeg в PIL. Любые мысли о том, как разрешить это? PIL отлично справился со мной в прошлом, когда дело доходит до просмотра/загрузки изображений.

Ответ 1

Скорее всего, потребуется только zip-декодер для сохранения jpeg. Я думаю, мне нужно было выполнить следующие шаги в OS X, чтобы просмотреть jpegs.

Вероятно, вам нужно:

Ответ 2

sudo pip uninstall PIL
sudo pip install pillow 

^^ исправил это для меня.

Pillow - это вилка PIL, которая совместима с pip/setuptools и получает немного лучшее обслуживание. Я еще не видел никаких различий API.

Изменить: существует одна заметная разница API. PIL предоставляет Image как пространство имен верхнего уровня, поэтому вы можете

import Image # in PIL only

но

from PIL import Image  # in pillow or PIL
  • Спасибо, Leopd!

Ответ 4

Я столкнулся с этой проблемой на 64-разрядной версии ubuntu версии 13.04, и вот как я ее разрешил.

попробуйте переустановить PIL и обратите внимание на информацию о выходе после переустановки:

---------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.4 (default, Sep 26 2013, 03:20:26)
              [GCC 4.7.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
*** ZLIB (PNG/ZIP) support not available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

обратите внимание, что существует строка: *** ZLIB (PNG/ZIP) support not available, что означает, что PIL были созданы без поддержки ZLIB, и я исправил это, выполнив следующее:

сначала вы должны установить эти пакеты: libjpeg-dev libfreetype6-dev zlib1g-dev

sudo apt-get install python-dev libjpeg-dev libfreetype6-dev zlib1g-dev

# create these links, if already exists, remove it and re-link it
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

# reinstall PIL
pip uninstall PIL
pip install PIL

В этот раз на выходе должна быть строка --- ZLIB (PNG/ZIP) support available.

Ссылка: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/

Ответ 5

Я столкнулся с той же проблемой. Мне кажется, что подушка и подушка (разные случаи в "р" ) - это два разных пакета. Итак, если вы используете Pillow, pip install pillow может не помочь. Вот мое решение:

$ pip uninstall pillow
$ pip uninstall Pillow
$ sudo apt-get install libjpeg-dev zlib1g-dev
$ pip install -I Pillow

Первые две строки должны удалить любую подушку или пакет подушек.

Третья строка - установить два обязательных пакета.

Forth переустанавливает подушку.

Обратите внимание: если вы используете virtualenv, pip install/uninstall должен запускаться под virtualenv

Ответ 6

То, как я исправил это на OS X Mavericks, сделал это:

Установите brew:

http://brew.sh/

Установить pip:

http://www.pip-installer.org/en/latest/installing.html

С помощью этих функций вы можете сделать это:

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

После этого он работал нормально. Для объяснения третьей строки проверьте этот ответ:

fooobar.com/questions/81173/...

Ответ 7

на mac

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install PIL

Ответ 8

Я использую 64-разрядную версию настольной версии 14.04LTS для 64-битной версии, и я попробовал ответить Джонни Чжао. Когда

exec sudo easy_install PIL

Появилась ошибка:

can't find freetype/fterrors.h

и я нахожу freetype2 в /usr/include/

Вы могли бы решить это:

sudo ln -s /usr/include/freetype2 /usr/include/freetype

тогда установка будет успешной

Ответ 9

Причиной может быть установка подушки без поддержки zlib.

В CentOS 7:

yum install zlib zlib-devel
pip install Pillow --upgrade

И если вы используете для webapp перезагрузите свой веб-сервер, чтобы применить.

Ответ 10

в моем случае, я просто remoto python-image, убедитесь, что libz готов, затем переустановите PIL, более подробную информацию вы можете увидеть на моем сообщении здесь:

http://febru.soluvas.com/2014/03/solved-openerp-7-ioerror-decoder-zip.html

Ответ 11

Mac OS X PIL JEPG и проблемы с PNG (то же самое для linux os), этот пост помогает мне в проблемах PNG и JPEG с PIL: декодер zip недоступен и декодер jpeg недоступен

Убедитесь, что JPEG и ZLIB доступны при установке/переустановке PIL:

$ cd Imaging-1.1.7
$ python setup.py build_ext -i
$ python selftest.py

--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------

Ответ 12

Я попробовал версию 2.8.0, она отлично работает мне

pip install -Iv Pillow==2.8.0

Ответ 13

На Ubuntu 18 мне пришлось установить pillow 2.8.1:

pip install Pillow==2.8.1

Ответ 14

Пытаться: $ sudo apt-get install python-dev $ sudo apt-get install libjpeg8-dev $ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib Начиная с версии 3.0.0 Подушка нуждается в libjpeg. Если проблема не устранена, возможно, существует некоторая несовместимость пакетов. Сэкономьте время и попробуйте предыдущую версию: $ pip install Pillow==2.8.1