1

Django 1.10 で開発された Web サイトがあります。ユーザーはウェブサイトに画像を送信できます。残念ながら、非常に重い画像があります。(> 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