PIL Image.thumbnail() завершается с неизвестным IOError
У меня есть приложение Django, которое собирает данные через многокомпонентную форму, включая значения POST и FILES. Данные формы правильно принимаются в моих представлениях Django, и я пытаюсь обработать файлы изображений, переданные через форму, чтобы создать миниатюры с помощью PIL.Image. Однако, когда я вызываю метод Image.thumbnail() (или, в этом отношении, любой метод, кроме Image.open ()), я получаю IOError, которую я не могу исследовать дальше.
Вот код:
from PIL import Image
import io
import os
from django.core.files.uploadedfile import SimpleUploadedFile
from django.core.files.base import ContentFile
from django.conf import settings
def generate_thumbnail(file):
if 'image' in file.content_type:
print "about to save the thumbnail"
file_content= ContentFile(file.read())
print "file read"
full_filename = os.path.join(settings.MEDIA_ROOT, file.name)
print "path selected"
fout = open(full_filename, 'wb+')
for chunk in file_content.chunks():
fout.write(chunk)
fout.close()
print " file saved"
im = Image.open(open(full_filename, 'rb'))
print im.getbands()
#no problem up to this point
try:
size = 128,128
thumb = im.thumbnail(size)
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
Сценарий вызывает исключение IOError, но печать выдает мне только "I/O error(None): None". Обратите внимание, что fout.write () успешно записывает мой файл в выбранный путь, и что Image.open (), а также Image.getbands() работают успешно (последний правильно возвращает, ('R', 'G', ' В ')). Но все, что вызывает Image.load (), в данном случае Image.thumbnail(), похоже, не работает.
Есть идеи?
1 ответ
(Перемещение ответа из поля вопроса в поле ответа)
Я изменил исключение, чтобы напечатать IOError как текст, и получил "декодер jpeg недоступен". Тем не менее,
brew install libjpeg
показал, что библиотека уже была установлена. По какой-то причине, Подушка не видела этого. Поэтому я удалил и переустановил подушку сpip uninstall pillow
а такжеpip install pillow
,