ResizeToFit(宽度=最大(source_pic_width, 750)

ResizeToFit(width=max(source_pic_width, 750)

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})

问题是用户可以上传小图片。像 800 像素宽。在这种情况下,似乎没有理由将其扩展到 970 和 1170。让它只是原始的 800。

在这种情况下,我更喜欢像 ResizeToFit(width=max(self.pic.width, 750) 这样的东西。但我没能做到。

你能给我解释一下这件事吗?

ResizeToFiT 接受另一个名为 upscale 的参数。默认为True,但设置为False时,如果图片尺寸小于目标尺寸,则不会放大。

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