web-dev-qa-db-fra.com

Vérifier si une image est déjà optimisée pour le Web

J'ai trouvé cet outil qui optimise les images pour le Web. Ce qui est surprenant pour moi (bien sûr, il y aura d’autres outils comme celui-ci :)), c’est que cela n’optimise l’image téléchargée que si cela est possible, je veux dire, si elle considère que l’image est déjà optimisée pour le Web, elle indique " Pas d'économies ".

Ma question: avant d'exécuter quelque chose comme convert -quality 80, existe-t-il un moyen (en utilisant ImageMagick ou tout autre outil sous Linux) de vérifier si une image est déjà optimisée pour le Web? Dans ce cas, je ne lancerais pas convert -quality 80.

5
tirengarfio

En vous référant à la méthode ImageMagick convert et au paramètre quality, il apparaît que vous travaillez avec des images JPEG. Si c'est le cas, les informations EXIF pour les images JPEG n'ont pas de niveau de compression standard tag .

Toutefois, ImageMagick semble pouvoir extraire ces informations des tables de quantification de l'image à l'aide de la commande identify. Alors essayez ceci:

identify -verbose yourimage.jpg

Vous devriez ensuite pouvoir analyser le niveau de qualité de la sortie standard. Par exemple:

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

Je voudrais juste écraser toutes vos images en utilisant un script comme celui ci-dessous que j'utilise. Veillez à sauvegarder le répertoire images en premier. Si les images résultantes sont plus petites que celles que vous serviez, elles ne sont pas optimisées!

#!/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 vient d'ici: http://pmt.sourceforge.net/pngcrush/
jpegtran vient d'ici: http://jpegclub.org/jpegtran/

Trois notes:

  1. pngout a une meilleure compression sur la plupart des fichiers: http://advsys.net/ken/utils.htm [ source ]
  2. Pour les JPEG, crachez-les dans différents réglages de qualité et voyez quelle est la valeur de qualité acceptable la plus basse (elle varie en fonction de la taille de l'image et de l'écran de destination).
  3. cwebp peut probablement faire mieux sur les jpeg et les PNG, mais ne peut être utilisé que dans Chrome et Opera (bientôt Firefox): https: // développeurs .google.com/speed/webp /
1
Nicholas Shanks