Я пытаюсь изменить размер изображения до его сохранения. Я использую пользовательский метод сохранения на модели, но я попал в ловушку.модель save способ. Изменение размера изображения перед сохранением
Это код, у меня сейчас:
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)
Это терпит неудачу, и говорит мне, что файл не может быть найден. Насколько я могу судить, это связано с тем, что изображение пока существует только в памяти и поэтому не может быть открыто так.
Итак, мой вопрос: как я открываю изображение из памяти и сохраняю его обратно в память, поэтому метод сохранения по умолчанию может справиться с этим?
Большое спасибо за любую помощь, это сводит меня вверх по стене :)
Большое спасибо. Сначала подумал о спасении, но потом забыл об этом. Не знаю, почему. И спасибо за хэдпокс по имени. Я продолжаю называть все мои модели во множественном числе, этот, должно быть, проскользнул через последнюю проверку :) –