Тип исключения: OSError Значение исключения: невозможно записать режим RGBA в формате JPEG - PullRequest
0 голосов
/ 06 октября 2018

Я загрузил более 10 изображений с помощью следующего кода в моем приложении django (используя библиотеку подушек изображений).

def save(self):
    im = Image.open(self.image)
    output = BytesIO()
    im = im.resize((500, 500))

    im.save(output, format='JPEG', optimize=True, quality=95)
    output.seek(0)

    self.image = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.image.name.split('.')[0], 'image/jpeg',
                                      sys.getsizeof(output), None)

    super(Report_item, self).save()

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

Exception Type: OSError
Exception Value:    
cannot write mode RGBA as JPEG

Я получил решение от одного из ответов в StackOverflow, чтобы изменить тип изображения с любого другого на png.

Теперь мой код выглядит так, но процесс кажется немного медленным, так какпо сравнению с тем, что было раньше.

def save(self):
    im = Image.open(self.image)
    output = BytesIO()
    im = im.resize((500, 500))

    im.save(output, format='PNG', optimize=True, quality=95)
    output.seek(0)

    self.image = InMemoryUploadedFile(output, 'ImageField', "%s.png" % self.image.name.split('.')[0], 'image/jpeg',
                                      sys.getsizeof(output), None)

    super(Report_item, self).save()

Теперь изображение загружается без проблем.

Пожалуйста, объясните мне, почему я получил эту ошибку после загрузки более 10 фотографий.Это правильный способ сделать это.Что делать, если я хочу сохранить в формате JPEG?Моя заявка находится в производстве.Поэтому я хочу использовать только правильный код для правильной работы.Пожалуйста, помогите мне разобраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...