1

我有一个用 Django 1.10 开发的网站。用户可以将图像发送到网站。不幸的是,图像很重!(> 1 个月)。

目前,当尺寸大于或等于 4000*4000 时,我将大小调整为 128*128,但对于重量来说还不够...

Google 建议使用 Jpegoptim 和 Optipng。所以我尝试直接在我的 Django 代码中使用这些工具,但它不起作用......(我已经安装了 jpegoptim 和 optipng):

def optimize(path):
    runString = {
        ".jpeg": u"jpegoptim -f --strip-all '%(file)s'",
        ".jpg": u"jpegoptim -f --strip-all '%(file)s'",
        ".png": u"optipng -force -o7 '%(file)s' && advpng -z4 '%(file)s' && pngcrush -rem gAMA -rem alla -rem cHRM -rem iCCP -rem sRGB -rem time '%(file)s' '%(file)s.bak' && mv '%(file)s.bak' '%(file)s'"
    }

    ext = splitext(path)[1].lower()
    if ext in runString :
        print("ok")
        subprocess.Popen(runString[ext] % {'file': path}, shell=True)


class ImageUser(models.Model):
    image = models.ImageField(upload_to="imageUser/", null=True)

    def save(self, *args, **kwargs) :
        super(ImageUser, self).save()
        image = Image.open(self.image.path)
        optimize(self.image.path)
        image.save(self.image.path)

如果可能的话,我想在保存之前减少图像的重量。我哪里错了?谢谢

4

0 回答 0