0

私は自分の Go アプリケーションで JPEG 圧縮に mozjpeg を使用しようとしてきました。これは、mozjpeg が提供する cjpeg コマンドライン ユーティリティを使用すると、非常に優れた品質が得られるように思われるためです。

しかし、私のアプリケーションで圧縮された画像は品質が低く、同じ品質レベルの JPEG アーティファクトがはるかに多くなります。

https://github.com/subuk/go-mozjpeg/blob/master/jpeg/compress.goから libjpeg-turbo / mozjpeg の go バインディングを使用しています。

私自身のコードはそれほど複雑ではないようです:

    libjpegOptions := jpeg.EncoderOptions{
        Quality:         92,
        OptimizeCoding:  true,
        ProgressiveMode: true,
    }

    err = jpeg.Encode(buf, m, &libjpegOptions)
    if err != nil {
        return nil, err
    }

どちらのアプリケーションも、Homebrew でインストールされた同じバージョンの mozjpeg ライブラリにリンクしているようです。

$ otool -L /opt/mozjpeg/bin/cjpeg
/opt/mozjpeg/bin/cjpeg:
    /opt/mozjpeg/lib/libjpeg.62.dylib (compatibility version 65.0.0, current version 65.0.0)
    /usr/local/opt/libpng/lib/libpng16.16.dylib (compatibility version 51.0.0, current version 51.0.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)

$ otool -L /Users/fabio/Code/go/bin/imageproxy
/Users/fabio/Code/go/bin/imageproxy:
    /opt/mozjpeg/lib/libjpeg.62.dylib (compatibility version 65.0.0, current version 65.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1451.0.0)
    /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 58286.41.2)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)

アプリケーションが cjpeg と同じ設定を使用していることを確認するには、次に何を試すことができますか?

4

1 に答える 1