@yuretzgt

Django Admin — как оптимизировать изображение при загрузке?

Задача простая: админ загружает через форму много изображений, который могут быть невероятно большими. Мне нужно "на лету" уменьшить размер, отконвертировать в JPEG и изменить качество чтобы картинка не занимала много места. Перекопал много всего, в том числе англоязычного - ничего на Django 3 не работает.

from django.db import models

def Service_Block_Photo_Name(instance, filename):
    return 'service_block/{0}.jpg'.format(instance.id)

class Service_Block_Photo(models.Model):
    def save(self, *args, **kwargs):
        if self.photo_number is None:
            print(self.service_block_id)
            try:
                current_max_block = Service_Block_Photo.objects.filter(service_block_id=self.service_block_id).order_by("-photo_number")[0]
                current_max_number = int(current_max_block.photo_number)+1
            except:
                current_max_number = 1
            self.photo_number = current_max_number
        ###
        ### тут видимо нужен блок изменяющий изображение BLOCK_IMAGE
        ###
        super(Service_Block_Photo, self).save(*args, **kwargs)

    service_block       = models.ForeignKey('Service_Block', on_delete=models.PROTECT)
    photo_number        = models.SmallIntegerField(verbose_name="Номер", blank=True)
    name_short          = models.CharField(max_length=100, verbose_name="Короткое название")
    name_full           = models.CharField(max_length=300, verbose_name="Длинное название", blank=True)
    block_image         = models.ImageField(upload_to=Service_Block_Photo_Name, null=True, blank=True, verbose_name="Изображение")
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
@bacon
Гугл, "django resize image" ну или сразу https://pillow.readthedocs.io/en/stable/handbook/t...
Так что, хз чё вы копали, инфы дофига, от руками до готовых батареек.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@deliro
Агрессивное программирование
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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