Изменение размера изображения Django во время загрузки

9 johndoevodka [2013-03-20 12:30:00]

В Django можно изменить (изменить размер) загруженное изображение до его сохранения на диск? Я бы предпочел сделать это без использования каких-либо дополнительных приложений.

django upload image resize photo


2 ответа


19 Решение johndoevodka [2013-03-20 15:21:00]

Меня раздражало, что я не смог найти полный рабочий пример, только биты здесь и там. Мне удалось собрать решение вместе. Вот полный пример, я поместил его в метод clean() формы (вы также можете переопределить метод save(), совершенно так же - изменить свойство файла ImageField).

import StringIO
from PIL import Image

image_field = self.cleaned_data.get('image_field')
image_file = StringIO.StringIO(image_field.read())
image = Image.open(image_file)
w, h = image.size

image = image.resize((w/2, h/2), Image.ANTIALIAS)

image_file = StringIO.StringIO()
image.save(image_file, 'JPEG', quality=90)

image_field.file = image_file