web-dev-qa-db-ja.com

ImageMagick:最大ファイルサイズでJPEG画像を拡大縮小

縮小したいJPEG画像がいくつかあります。別の要件は、ファイルサイズが300kByteを超えないことです。

それは可能ですか、例で私を助けてください=)

50
kungcc

結果の画像を最大ファイルサイズに制限するには、コマンドラインパラメータ-define jpeg:extent=max_value、 このような:

convert original.jpeg -define jpeg:extent=300kb output.jpg
convert original.jpeg -define jpeg:extent=300kb -scale 50% output.jpg
convert original.jpeg -define jpeg:extent=300kb [...other options...] output.jpg

注:これは、希望するexactサイズと一致するとは限りません。入力が300kbの場合、40kbの出力サイズを要求し、48kbの結果を得る場合があります。


Update/Clarification:出力ファイルのサイズは、要求されたファイルのサイズより少し小さい場合も大きい場合もあります。)

77
Kurt Pfeifle

jpegoptim ツール( 実際のホームページ は複数のプログラム用)は、私にとってはうまく機能します。

jpegoptim -s -S8 *.JPG
  • -sは、すべてのメタデータ(EXIF、JFIF、XMPなど)を除去することを意味します
  • -S8は、約8 KiBのファイルサイズをターゲットにすることを意味します

経験的に、ほとんどの画像はプログレッシブほど小さくなっているため、2回実行することでさらに改善できます。

jpegoptim -s --all-progressive -S8 *.JPG; jpegoptim -s --all-normal -S8 *.JPG

jpegoptimは通常、サイズを大きくするイメージの書き込みを拒否するため、最適な品質/サイズが得られます。

画像の寸法部分に関しては、通常、最初に寸法に関してターゲットサイズを定義し、そこでスケールします。その後のみターゲットを定義しますfileサイズ。これは、表示するときに、スケーリングを簡単にしたり、不要にしたりするために、最終的な表示サイズの整数倍または一部である画像のサイズが理想的だからです。そのため、最初にターゲットのサイズにスケーリングし(品質100、および場合によっては4:4:4クロマなど、おそらくdct floatで)、ファイルを縮小します。目的のファイルサイズの範囲に到達できない場合は、より小さいターゲットディメンションを選択して再起動します(最初に縮小したものではなく、元の画像から)。

13
mirabilos