Наличие модели Django для миниатюрного изображения, например:
class Thumb(models.Model):
thumb = models.ImageField(upload_to='uploads/thumb/', null=True, default=None)
Представление создает эскиз с пакетом pillow
и должен сохранить его в экземпляр Thumb
, используя такой код:
image.thumbnail((50, 50))
inst.thumb.save('thumb.jpg', ???)
Как правильно сделать image
данные для inst.thumb.save
в ???
?
Мне удалось заставить работать следующее:
thumb_temp = NamedTemporaryFile()
image.save(thumb_temp, 'JPEG', quality=80)
thumb_temp.flush()
inst.thumb.save('thumb.jpg', File(thumb_temp))
thumb_temp.close() # Probably required to ensure temp file delete at close
Но писать временный файл только для передачи внутренних данных в inst.thumb.save
кажется довольно неуклюжим, поэтому мне интересно, есть ли более элегантный способ сделать это. Документация для класса Django NamedTemporaryFile
.