Сохранение формата JPG с помощью PIL - PullRequest
3 голосов
/ 03 февраля 2012

Я использую PIL для создания эскизов загружаемых изображений, и все в порядке с PNG или GIF. Однако загрузка файлов JPG доставляет мне головную боль. Некоторое время я продолжал получать неверный тип формата, а потом обнаружил это внизу страницы JPG на сайте PIL ...

Примечание. Чтобы включить поддержку JPEG, необходимо создать и установить IJG Библиотека JPEG перед сборкой библиотеки изображений Python. Увидеть дистрибутив README для деталей.

Во всяком случае, поэтому я развернул в Heroku и по какой-то причине он, похоже, больше не выдает мне ошибку неверного формата, которую я получал на своем локальном компьютере ... за исключением того, что в базе данных теперь есть фотообъект Я не могу получить к ним доступ. Я помещаю их местоположение в тег изображения, но получаю символ связи с битым изображением.

Вот как выглядит мое переопределение сохранения в моделях:

def save(self, force_update=False, force_insert=False, thumb_size=(90,150)):
    image = Image.open(self.image)

    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    # save the original size
    self.image_width, self.image_height = image.size

    image.thumbnail(thumb_size, Image.ANTIALIAS)

    # save the thumbnail to memory
    temp_handle = StringIO()

    image.save(temp_handle, format='JPEG')

    temp_handle.seek(0) # rewind the file
    # save to the thumbnail field
    suf = SimpleUploadedFile(os.path.split(self.image.name)[-1],
                            temp_handle.read(),
                            content_type='image/jpg')
    self.thumbnail.save(suf.name, suf, save=False)
    self.thumbnail_width, self.thumbnail_height = image.size


    #save the image object
    super(Photo, self).save(force_update, force_insert)
...