1

ImageMagickを使用して、画像の色を減らすことにより、プログラムでPNG画像のサイズを縮小しています。画像をunique-colorsで取得し、これを2で割ります。次に、この値を-colorsオプションに次のように割り当てます。

変数=一意-色/2

image.png -colors variable-depth8を変換します

これにより画像のサイズが大幅に縮小されると思いましたが、代わりにディスク上の画像のサイズが大きくなります。誰もがこれに光を当てることができますか?

ありがとう。

編集:問題はディザリングであったことが判明しました。ディザリングは、縮小されたカラー画像を元の画像のように見せることができますが、画像サイズが大きくなります。ImageMagickでディザリングを削除するには、コマンドに+ditherを追加します。例

変換CandyBar.png+dither -colors 300 -depth 8 smallCandyBar.png

4

3 に答える 3

3

Imagemagick はおそらく何らかのディザリング アルゴリズムを使用して、画像が元の量の色を持っているかのように見せます。これにより、画像データの「ランダム性」が増し (単一のピクセルが他の色に溶け込むためにいくつかの場所で色が変更されます)、この画像データもパックされなくなります。convertコマンドがディザリングを行う方法をさらに調べます。この効果は、gimp/同等のプログラムで 2 番目の画像をレイヤーとして追加し、透明度を調整することによっても確認できます。

于 2010-11-17T12:23:16.063 に答える
1

これにはpngquantを使用する必要があります。

色の数を推測する必要はありません。実際の--quality設定があります。

pngquant --verbose --quality=70 image.png

上記は、JPEG 品質と同じスケールで特定の品質に一致するために必要な色の数を自動的に選択します (100 = 完璧、70 = OK、20 = ひどい)。

pngquantは大幅に優れた量子化アルゴリズムを備えており、量子化が優れているほど、品質とファイルサイズの比率が向上します。

またpngquant、ディザリングなしで見栄えの良い領域をディザリングしません。これにより、ファイルに不要なノイズ/ランダム性が追加されるのを回避できます。

于 2013-03-06T01:54:04.860 に答える
0

「新しい」PNG の圧縮は、元のものほど良くありません。

于 2010-11-17T11:22:01.847 に答える