ResizeToFit(width=max(source_pic_width, 750)

Джанго-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})

Проблема в том, что пользователь может загрузить небольшую картинку. Как 800 пикселей в ширину. В этом случае, похоже, нет причин растягивать его до 970 и 1170. Пусть это будет просто оригинал 800.

В этом случае я бы предпочел что-то вроде ResizeToFit(width=max(self.pic.width, 750). Но я не смог этого сделать.

Не могли бы вы объяснить мне этот вопрос?

1 ответ

Решение

ResizeToFiTпринимает другой параметр с именем upscale, По умолчанию True, но когда установлено False, изображение не будет увеличено, если его размеры меньше целевых размеров.

processors=[ResizeToFit(width=970, upscale=False)]

Другие вопросы по тегам