ResizeToFit в django-imagekit - Python

Формулировка задачи:

django-imagekit==4.0Вот модель:
class Image(CommonUrlMethodsMixin, GeneralModel):
 
    pic = models.ImageField(verbose_name=_("Image"), upload_to=get_upload_path)
    pic_xs = ImageSpecField(source='pic',
                                 processors=[ResizeToFit(width=500)],
                                 format='JPEG',
                                 options={'quality': 60},
                                 autoconvert=True)
    pic_sm = ImageSpecField(source='pic',
                                 processors=[ResizeToFit(width=750)],
                                 format='JPEG',
                                 options={'quality': 60})
    pic_md = ImageSpecField(source='pic',
                                 processors=[ResizeToFit(width=970)],
                                 format='JPEG',
                                 options={'quality': 60})
    pic_lg = ImageSpecField(source='pic',
                                 processors=[ResizeToFit(width=1170)],
                                 format='JPEG',
                                 options={'quality': 60})
Проблема в том, что картинку загружает пользователь. Но пользователь ведь может загрузить картинку и маленькую. Скажем, 700 px по ширине. Так чего же ее тянуть до 1170? Скажите, можно как-то это предотвратить? Т.е. как не создавать изображений заведомо растянутых больше оригинала. Или только в шаблоне проверять ширину оригинала и оптимизированных изображений? И подставлять уже что подойдет. Но тогда тут возникает момент - надо еще одно изображение сделать: такое, как оригинал, но оптимизированное по уровню компрессии. Но все равно ведь сетка работает. Так что если даже не само изображение как таковое растянуто, так его отображение в браузере будет растянуто средствами CSS до нужной ширины колонки сетки. Так лучше я изображение сам программно растяну и сохраню - ресурсы на диске есть. Так что хочется как-то вот так: ResizeToFit(width=max(source_pic_width, 750) Был бы признателен за комментарий.

Код к задаче: «ResizeToFit в django-imagekit - Python»

textual
ResizeToFit(width=1170, upscale=False)

5   голосов, оценка 3.800 из 5


СОХРАНИТЬ ССЫЛКУ