@messageman

Как изменить изображение после загрузки в Django?

У меня есть модель (https://pastebin.com/18W4AGSu)
Метод изменения размера должен взять существующий файл из поля «ImageField», изменить его размер и загрузить в поле «image_resized», но по какой-то причине форма ResizedForm передает аргументы высоты и ширины модели, но ничего не происходит.
Что мне нужно сделать, чтобы изменение размера работало правильно? Я уверен, что где-то я сделал что-то не так
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@reqww
from PIL import Image
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile

def save_image(output, name, format):
    return InMemoryUploadedFile(
            output, 
            'ImageField', 
            "%s.jpg" % name.split('.')[0], 
            f'image/{format}',
            sys.getsizeof(output), 
            None
        )


def image_save(self, *args, **kwargs):
        im2 = Image.open(self.avatar)
        im2 = im2.resize((50, 50))
        try:
            im2.save(output, format='JPEG', quality=100)
            format = 'jpeg'
        except OSError:
            im2.save(output, format='PNG', quality=100)
            format = 'png'
        output.seek(0)
        self.small_avatar = save_image(output, self.avatar.name, format)


Попробуй что-то вроде этого, я здесь открываю картинку, уменьшаю ее размер, у тебя для этого есть 2 переменные, после чего записываю в бинарник и сохраняю
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы