web-dev-qa-db-ja.com

画像が既にWeb用に最適化されているかどうかを確認します

私は このツール がウェブ用に画像を最適化することを発見しました。私にとって驚くべきことは(もちろん、このような他のツールもあります:))アップロードされた画像が可能な場合にのみ最適化されるということです。つまり、画像が既にWeb用に最適化されていると考えると、節約できません」。

私の質問:convert -quality 80のようなものを実行する前に、画像が既にWeb用に最適化されている場合に(ImageMagickまたはLinuxの他のツールを使用して)確認する方法はありますか?その場合、convert -quality 80を実行しません。

5
tirengarfio

ImageMagick convertメソッドとqualityパラメーターへの参照に基づいて、JPEG画像で作業しているようです。その場合、JPEG画像の EXIF 情報には、標準の圧縮レベル tag がありません。

ただし、ImageMagickはidentifyコマンドを使用して、画像の量子化テーブルからこの情報を取得できるようです。だからこれを試してください:

identify -verbose yourimage.jpg

そして、標準出力から品質レベルを解析できるはずです。例えば:

...
Compression: JPEG
Quality: 80
...
6
dan

以下で使用するスクリプトのようなスクリプトを使用して、すべての画像を粉砕します。最初に画像ディレクトリをバックアップしてください。結果の画像が提供している画像よりも小さい場合、それらは最適化されていません!

#!/bin/sh

# script for optimizing images in a directory (recursive)
# pngcrush & jpegtran settings from:
# http://developer.yahoo.com/performance/rules.html#opt_images

# pngcrush
for png in `find $1 -iname "*.png"`; do
    echo "crushing $png ..."
    pngcrush -rem alla -reduce -brute "$png" temp.png

    # preserve original on error
    if [ $? = 0 ]; then
        mv -f temp.png "$png"
    else
        rm temp.png
    fi
done

# jpegtran
for jpg in `find $1 -iname "*.jpg"`; do
    echo "crushing $jpg ..."
    jpegtran -copy none -optimize "$jpg" > temp.jpg

    # preserve original on error
    if [ $? = 0 ]; then
        mv -f temp.jpg "$jpg"
    else
        rm temp.jpg
    fi
done

pngcrushはここから来ます: http://pmt.sourceforge.net/pngcrush/
jpegtranはここから来ます: http://jpegclub.org/jpegtran/

3つのメモ:

  1. pngoutは、ほとんどのファイルの圧縮率が向上しています。 http://advsys.net/ken/utils.htm [ source ]
  2. JPEGの場合、さまざまな品質設定でそれらを吐き出し、許容できる最低の品質値を確認します(画像と出力先の画面サイズによって異なります)
  3. cwebpはおそらくjpegとPNGの両方でより良い結果を得ることができますが、ChromeとOperaでのみ使用できます(まもなくFirefox): https:// developers .google.com/speed/webp /
1
Nicholas Shanks