1

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)。但我没有做到这一点。

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

4

1 回答 1

2

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

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

于 2017-05-19T07:17:26.407 回答