метод сохранения модели. Изменить размер изображения перед сохранением

Я пытаюсь изменить размер изображения перед его сохранением. Я использую собственный метод сохранения для модели, но у меня возникла проблема.

Это код, который у меня сейчас есть:

class UserImages(models.Model):
    height = models.CharField(blank=True, max_length=100)
    width = models.CharField(blank=True, max_length=100)
    image = models.ImageField(upload_to="UserImages/%Y/%m/%d", height_field='height', width_field='width')
    owner = models.ForeignKey(User)

    def __unicode__(self):
        return str(self.image)
    def save(self, *args, **kwargs):
        if self.image:
            filename = str(self.image.path)
            img = Image.open(filename)

            if img.mode not in ('L', 'RGB'):
                img = img.convert('RGB')

            img = ImageOps.fit(img, (180,240), Image.ANTIALIAS, 0, (0.5, 0.5))
            img.save(self.image.path)
        super(UserImages, self).save(*args, **kwargs)

Это не работает и сообщает мне, что файл не может быть найден. Насколько я могу судить, это связано с тем фактом, что изображение пока существует только в памяти и поэтому не может быть открыто вот так.

Итак, мой вопрос: как я могу открыть изображение из памяти и сохранить его обратно в память, чтобы метод сохранения по умолчанию мог с этим справиться?

Большое спасибо за любую помощь, это меня просто подводит: )

1
задан Mathias Nielsen 8 September 2010 в 12:51
поделиться