PIL - Вставка/сохранение изображения в формате .jpg

Я сделал этот простой код, чтобы попытаться отладить большую программу, которая, по сути, делает то же самое:

from PIL import Image

photo = Image.open('Test1.png')        #640x480
photo.paste("black",(100,100,200,200))
photo.save('Edited.jpg')
photo.close()

Цель: работа с изображением .png, а затем преобразование его в (сохранение как) .jpg.

Я получаю следующую ошибку в строке photo.save:

поднять IOError («декодер %s недоступен» % decoder_name) IOError: декодер jpeg недоступен

Даже когда я пытаюсь открыть файл .jpg, я получаю ту же ошибку, но на этот раз в строке photo.paste.

Что я пробовал: удалил PIL через pip, установил библиотеки jpeg (libjpeg-dev, libfreetype6-dev, zlib1g-dev, libpng12-dev), которые уже были установлены, и переустановил PIL. Все еще не работает.

Любая помощь будет принята с благодарностью. Спасибо за чтение.

EDIT: Информация о системе: Raspberry Pi A — Raspbian Wheezy (3.18.7+ GNU/Linux) — Python 2.7.3


person X3minater    schedule 09.04.2015    source источник
comment
Какую ОС, версию Python используете?   -  person Marcin    schedule 09.04.2015
comment
Я только что попробовал это в Windows 7, Python 3.4.2, Pillow 2.6.1 с .jpg из папки Sample Pictures Windows. Работал отлично, ошибок не было. Это должно быть связано с окружающей средой.   -  person TigerhawkT3    schedule 09.04.2015
comment
Извините, я забыл упомянуть об этом. Я на Raspberry Pi, использую Rasbian Wheezy (версия Linux 3.18.7+) — Python 2.7.3.   -  person X3minater    schedule 10.04.2015


Ответы (1)


Во-первых, убедитесь, что libjpeg-dev установлен. После этого найдите общую библиотеку, например:

$ sudo find /usr/lib -iname libjpeg.so
/path/with/found/libjpeg.so
$ sudo ln -vs /path/with/found/libjpeg.so /usr/lib/

Таким образом, удалите и переустановите PIL/Pillow:

$ sudo pip uninstall Pillow
$ sudo pip install Pillow #or $ sudo apt-get install python-imaging

Это должно быть работой. Удачи!

person felipsmartins    schedule 10.04.2015
comment
Спасибо, но все еще есть та же ошибка =/ поднять IOError (кодер %s недоступен % encoder_name) IOError: кодировщик jpeg недоступен - person X3minater; 10.04.2015
comment
Попробуйте удалить через dpkg --purge. Возможно, python-imaging уже был ранее установлен. - person felipsmartins; 10.04.2015
comment
РЕШЕНО - Спасибо, felipsmartins! Я думаю, что у меня сработало удаление изображения python через apt-get, а затем его повторная установка (просто чтобы убедиться, я сделал то же самое с Pillow через pip). Во всяком случае, теперь это работает, muito obrigado :) - person X3minater; 10.04.2015
comment
Здорово! Я уверен, что это будет полезно для кого-то еще. - person felipsmartins; 10.04.2015