Итак, я пытаюсь немного сжать изображения, а также некоторые другие операции. У меня было несколько вопросов... У меня есть следующий метод save() для моего пользовательского класса:
class User(AbstractBaseUser, PermissionsMixin):
...
avatar = models.ImageField(storage=SITE_UPLOAD_LOC, null=True, blank=True)
def save(self, *args, **kwargs):
if self.avatar:
img = Img.open(BytesIO(self.avatar.read()))
if img.mode != 'RGB':
img = img.convert('RGB')
new_width = 200
img.thumbnail((new_width, new_width * self.avatar.height / self.avatar.width), Img.ANTIALIAS)
output = BytesIO()
img.save(output, format='JPEG', quality=70)
output.seek(0)
self.avatar= InMemoryUploadedFile(file=output, field_name='ImageField', name="%s.jpg" % self.avatar.name.split('.')[0], content_type='image/jpeg', size=, charset=None)
super(User, self).save(*args, **kwargs)
У меня было два вопроса:
- Лучший способ удалить старый файл аватара при сохранении, если существует предыдущий аватар
- Что мне передать в
InMemoryUploadedFile
для размера kwarg? Это размер файла? в какой единице/(ах)?