Django与Jpegoptim和Optipng

时间:2016-11-27 12:03:46

标签: python django jpegoptim

我有一个用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)

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

0 个答案:

没有答案