Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/09/2010, à 17:26

dnartreb89

Script pour l'optimisation des images pour publication sur le web

Salut à tous !

Comme beaucoup d'entre nous, je possède un blog. Et dans ce blog, comme tout le monde, il y a des images.

J'ai l'habitude de publier mes images en 1024x800 et j'ai remarqué qu'en jpeg, 75 Ko me suffisent en général pour obtenir une image de qualité suffisante pour illustrer mes articles. Bien souvent, on ne pense plus à optimiser au maximum nos images à cause du haut débit, et pourtant il faut aussi penser à ceux qui ne l'ont toujours pas, ça arrange aussi nos espaces de téléchargement et ça améliore le référencement vu que le site répond bien plus vite.

J'ai donc commencer à chercher à automatiser mes optimisations d'images. Gimp permet de le faire, et plein d'autres logiciels, mais aimant bien me compliquer la vie un bon coup pour me la simplifier ensuite, j'ai cherché à m'écrire un script qui optimiserait au mieux mes images par lot en fonction de mes besoins.

Vous trouverez ici la première version de ce script :

http://www.dnartreb89.fr/se-simplifier-la-compression-dimages

Ce script ne me convient pas encore, il fonctionne bien sur mon netbook sous debian squeeze, mais me génére des abérations sous ubuntu Lucid.

J'ai trouvé plusieurs infos intéressantes :

http://zigazou.wordpress.com/2009/05/07/compresser-un-jpeg-a-une-taille-donnee/

http://www.commentcamarche.net/faq/3770-optimiser-la-taille-des-images-png

http://zigazou.wordpress.com/2009/07/30/reduire-encore-plus-les-png/

http://zigazou.wordpress.com/2009/05/12/quand-le-png-est-plus-fort-que-le-jpeg/

Et je me dit qu'il serait très intéressant d'avoir un script qui automatise facilement toutes ces optimisations. Pour beaucoup de webmestres, ce serait confortable. big_smile

Je me permet donc de partager mon idée ici en espérant tomber sur des supers scripteurs qui m'aiderais un peu.

Le top du top serait un petit programme qui me propose ma liste d'image avec à coté diverses colonnes, dimensions, conversions, optimisations,taille fixe ou proportionnelle,etc.... je coche et pof, traitement par lot... mais bon , la je rêve un peu. smile

Enfin, si ça intéresse quelqu'un, à mon avis cette fonctionnalité pourrais servir à beaucoup.

Bonne journée à tous ! wink

Hors ligne

#2 Le 09/09/2010, à 21:06

webgerald

Re : Script pour l'optimisation des images pour publication sur le web

big_smile La qualité du jpeg ou jpg est certes meilleur mais pas,pour une  optimisation !!:cool:

Sur le net le format le mieux adapté est sans conteste le PNG;)

De plus il est question d'optimisation de rendu ou ; de kilo octet ?:)

En tous les cas tes liens servent de documentation pour les designer .


Utilisateur de windows puis de linux puis de windows et finalement de linux.
Pourquoi ?
Par-ce-que LINUX C'EST PLUS AMUSANT !!  : ) non ?

Hors ligne

#3 Le 09/09/2010, à 21:36

dnartreb89

Re : Script pour l'optimisation des images pour publication sur le web

Ta remarque est vraiment intéressante, c'est clair que le PNG à un beau rendu, mais dans mon coin j'ai l'ADSL en 512k et quand j'utilise mon site, j'apprécie de le trouver rapide, donc je cherche a gagner en Ko puisque mes images ne sont la que pour illustrer, rien de plus.

J'ai donc trouvé un script qui me convient au final, bien que je rêve d'un utilitaire dédié à cet effet permettant de profiter des optimisations et compressions possibles des images.

Je me sert donc uniquement du script de zigazou pour redimensionner en taille fixe:

http://zigazou.wordpress.com/2009/05/07/compresser-un-jpeg-a-une-taille-donnee/

et voici mon script qui automatise mes conversions à l'ensemble du dossier :

    #!/bin/bash

    # On crée le dossier optimiz
    mkdir optimiz

    # On y copie les images
    cp -f *.jpg optimiz/
    cp -f *.JPG optimiz/
    cp -f *.jpeg optimiz/
    cp -f *.png optimiz/

    # On s’y rend
    cd optimiz

    # On converti les PNG en JPG
    for i in *.png; do convert « ${i} »  « ${i%%.*}.jpg »; done

    # On redimensionne les images en 1024×800 par exemple
    # Pour les jpeg:
    # L’option -interlace line permet de créer des JPEG progessifs.
    # -strip supprime les informations additionnelles (EXIF, commentaires…)
    mogrify -auto-orient -quality 80 -resize 1024×800 *.jpg
    mogrify -auto-orient -quality 80 -resize 1024×800 *.jpeg
    mogrify -auto-orient -quality 80 -resize 1024×800 *.JPG

    # Compression des jpeg à 80 Ko environ
    jpegoptim 80 *.jpg
    jpegoptim 80 *.JPG

    # On efface les PNG
    rm *.png

    # Et on ressort
    cd ..

    # Et on informe
    echo message:Optimisation terminée | zenity –notification –listen –window-icon= »info » | zenity –notification –window-icon= »info » –text= »Optimisation terminée »

Et qui répond du coup pour le moment à mes besoins.

Il marche impec depuis ma Debian Squeeze, je croit qu'il me restera quelques petits réglages sur ma Lucid. Surtout concernant zenity.

Hors ligne

#4 Le 09/09/2010, à 23:04

twocats

Re : Script pour l'optimisation des images pour publication sur le web

#!/bin/bash

# On ne s'occupe plus de la casse
shopt -s nocaseglob

    # On crée le dossier optimiz
    mkdir optimiz

    # On y copie les images
    cp -f *.jp*g optimiz/
    cp -f *.png optimiz/

    # On s’y rend
    cd optimiz

    # On converti les PNG en JPG
    for i in *.png; do convert "${i}"  "${i%.*}.jpg "; done

    # On redimensionne les images en 1024×800 par exemple
    # Pour les jpeg:
    # L’option -interlace line permet de créer des JPEG progessifs.
    # -strip supprime les informations additionnelles (EXIF, commentaires…)
    mogrify -auto-orient -quality 80 -resize 1024×800 "*.jp*g"

    # Compression des jpeg à 80 Ko environ
    jpegoptim 80 "*.jp*g"

    # On efface les PNG
    rm "*.png"

    # Et on ressort
    cd ..

    # Et on informe
    echo message:Optimisation terminée | zenity –notification –listen –window-icon= »info » | zenity –notification –window-icon= »info » –text= »Optimisation terminée »

A tester.


La réponse est 42

Hors ligne

#5 Le 10/09/2010, à 09:18

dnartreb89

Re : Script pour l'optimisation des images pour publication sur le web

Je ne connaissait pas :

shopt -s nocaseglob

J'ai essayé plusieurs adaptations du script avec shopt et sans, mais il ne résoud pas encore ce script, par contre c'est beaucoup plus propre wink , du coup je cale un peu la.

Ma dernière version:

#!/bin/bash


    # On crée le dossier optimiz
    mkdir optimiz

    # On y copie les images
    cp -f *.jpg optimiz/
    cp -f *.jpeg optimiz/   
    cp -f *.JPG optimiz/
    cp -f *.png optimiz/

    # On s’y rend
    cd optimiz
    

    # On renomme les JPG et jpeg en jpg
    for j in *.JPG; do mv "${j}"  "${j%.*}.jpg "; done
    for k in *.jpeg; do mv "${k}"  "${k%.*}.jpg "; done
    
    # On converti les PNG en JPG
    for i in *.png; do convert "${i}"  "${i%.*}.jpg "; done
    
    
    # On redimensionne les images en 1024×800 par exemple
   mogrify -auto-orient -resize 1024×800 -quality 80 *.jpg

    # Compression des jpeg à 80 Ko environ
    jpegoptim 80 *.jpg

    # On efface les PNG
    rm *.png

    # Et on ressort
    cd ..

    # Et on informe
zenity --info --text='Compressions Terminées'

Marche beaucoup mieux avec zenity (commande plus simple donc moins de soucis)

Mais la commande mogrify me renvoie des erreurs et je ne comprend pas pourquoi.

Du coup les images qui on étés converties vers le . jpg ne sont pas prisent en charge par la compression. Je vais chercher encore.

Hors ligne

#6 Le 10/09/2010, à 10:41

twocats

Re : Script pour l'optimisation des images pour publication sur le web

Qu'est-ce qui ne marche pas avec shopt ?
Quels sont les erreurs avec mogrify ?
Un conseil si tu veux qu'on t'aide, donne le maximum de renseignements. C'est pénible de devoir arracher la moindre info pour avancer. wink


La réponse est 42

Hors ligne

#7 Le 10/09/2010, à 13:23

dnartreb89

Re : Script pour l'optimisation des images pour publication sur le web

pénible... arracher ... hmm, escuse moi. hmm:|:D;):cool:

Vu l'heure de ton post, tu doit avoir un petit creux je pense ! smile



Bon (ne pas prendre en compte les ��, j'ai une locale à reconfigurer:

Voila le test avec ton script:

dnartreb89@dnartreb:~/2010$ ls -l
total 22116
-rw-r--r-- 1 dnartreb89 dnartreb89  182233  8 sept. 21:54 4520986339_99857d1c35_o.jpg
-rw-r--r-- 1 dnartreb89 dnartreb89  427176  4 juil. 15:22 Capture-1.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1561213  5 juil. 11:55 Capture-2.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1180910  5 juil. 15:13 Capture-3.png
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130595  9 sept. 11:18 IMG_1698.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3165899  9 sept. 11:18 IMG_1699.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130764  9 sept. 11:19 IMG_1700.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3032454  9 sept. 12:08 IMG_1703.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3383945  9 sept. 12:09 IMG_1704.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3378076  9 sept. 12:09 IMG_1705.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89     809 10 sept. 10:21 optimage
-rwxr-xr-x 1 dnartreb89 dnartreb89     976 10 sept. 13:55 optimage2
dnartreb89@dnartreb:~/2010$ ./optimage2
mogrify: invalid argument for option `1024×800': -resize @ error/mogrify.c/MogrifyImageCommand/5749.
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
djpeg: can't open *.jp*g
Empty input file
Empty input file
rm: impossible de supprimer ��*.png��: Aucun fichier ou dossier de ce type
Vous devez indiquer un type de bo�te de dialogue. Lancer ��zenity --help�� pour plus de d�tails.
Vous devez indiquer un type de bo�te de dialogue. Lancer ��zenity --help�� pour plus de d�tails.
dnartreb89@dnartreb:~/2010$ cd optimiz/
dnartreb89@dnartreb:~/2010/optimiz$ ls -l
total 25180
-rw-r--r-- 1 dnartreb89 dnartreb89  182233 10 sept. 13:56 4520986339_99857d1c35_o.jpg
-rw-r--r-- 1 dnartreb89 dnartreb89  418767 10 sept. 13:56 Capture-1.jpg 
-rw-r--r-- 1 dnartreb89 dnartreb89  427176 10 sept. 13:56 Capture-1.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1539559 10 sept. 13:56 Capture-2.jpg 
-rw-r--r-- 1 dnartreb89 dnartreb89 1561213 10 sept. 13:56 Capture-2.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1171148 10 sept. 13:56 Capture-3.jpg 
-rw-r--r-- 1 dnartreb89 dnartreb89 1180910 10 sept. 13:56 Capture-3.png
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130595 10 sept. 13:56 IMG_1698.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3165899 10 sept. 13:56 IMG_1699.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130764 10 sept. 13:56 IMG_1700.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3032454 10 sept. 13:56 IMG_1703.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3383945 10 sept. 13:56 IMG_1704.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3378076 10 sept. 13:56 IMG_1705.JPG
-rw-r--r-- 1 dnartreb89 dnartreb89       0 10 sept. 13:56 *.jp*g
dnartreb89@dnartreb:~/2010/optimiz$

Aucunes modifications.

et avec cette dernière version :

    #!/bin/bash

    # On crée le dossier optimiz
    mkdir optimiz

    # On y copie les images
    cp -f *.jpg optimiz/
    cp -f *.JPG optimiz/
    cp -f *.jpeg optimiz/
    cp -f *.png optimiz/

    # On s’y rend
    cd optimiz

    # On converti les PNG en JPG
    for i in *png; do convert $i $(basename $i jpg).jpg ; done

    # On redimensionne les images en 1024×800 par exemple
    mogrify -auto-orient -quality 80 -resize 1024×800 *.jpg
    mogrify -auto-orient -quality 80 -resize 1024×800 *.jpeg
    mogrify -auto-orient -quality 80 -resize 1024×800 *.JPG

    # Compression des jpeg à 80 Ko environ
    jpegoptim 80 *.jpg
    jpegoptim 80 *.JPG

    # On efface les PNG
    rm *.png

    # Et on ressort
    cd ..

    # Et on informe
zenity --info --text='Compressions Terminées'

Résultat :

 dnartreb89@dnartreb:~/2010$ ls -l
total 22116
-rw-r--r-- 1 dnartreb89 dnartreb89  182233  8 sept. 21:54 4520986339_99857d1c35_o.jpg
-rw-r--r-- 1 dnartreb89 dnartreb89  427176  4 juil. 15:22 Capture-1.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1561213  5 juil. 11:55 Capture-2.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1180910  5 juil. 15:13 Capture-3.png
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130595  9 sept. 11:18 IMG_1698.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3165899  9 sept. 11:18 IMG_1699.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130764  9 sept. 11:19 IMG_1700.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3032454  9 sept. 12:08 IMG_1703.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3383945  9 sept. 12:09 IMG_1704.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3378076  9 sept. 12:09 IMG_1705.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89     804 10 sept. 14:14 optimage
-rwxr-xr-x 1 dnartreb89 dnartreb89     976 10 sept. 13:55 optimage2
dnartreb89@dnartreb:~/2010$ ./optimage
cp: impossible d'�valuer ��*.jpeg��: Aucun fichier ou dossier de ce type
mogrify: invalid argument for option `1024×800': -resize @ error/mogrify.c/MogrifyImageCommand/5749.
mogrify: invalid argument for option `1024×800': -resize @ error/mogrify.c/MogrifyImageCommand/5749.
mogrify: invalid argument for option `1024×800': -resize @ error/mogrify.c/MogrifyImageCommand/5749.
Caution: quantization tables are too coarse for baseline JPEG
Caution: quantization tables are too coarse for baseline JPEG
Caution: quantization tables are too coarse for baseline JPEG

...
je raccourci, pas intéressant les X lignes....
...

Caution: quantization tables are too coarse for baseline JPEG
Caution: quantization tables are too coarse for baseline JPEG
Caution: quantization tables are too coarse for baseline JPEG
dnartreb89@dnartreb:~/2010$ ls -l
total 22120
-rw-r--r-- 1 dnartreb89 dnartreb89  182233  8 sept. 21:54 4520986339_99857d1c35_o.jpg
-rw-r--r-- 1 dnartreb89 dnartreb89  427176  4 juil. 15:22 Capture-1.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1561213  5 juil. 11:55 Capture-2.png
-rw-r--r-- 1 dnartreb89 dnartreb89 1180910  5 juil. 15:13 Capture-3.png
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130595  9 sept. 11:18 IMG_1698.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3165899  9 sept. 11:18 IMG_1699.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3130764  9 sept. 11:19 IMG_1700.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3032454  9 sept. 12:08 IMG_1703.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3383945  9 sept. 12:09 IMG_1704.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89 3378076  9 sept. 12:09 IMG_1705.JPG
-rwxr-xr-x 1 dnartreb89 dnartreb89     804 10 sept. 14:14 optimage
-rwxr-xr-x 1 dnartreb89 dnartreb89     976 10 sept. 13:55 optimage2
drwxr-xr-x 2 dnartreb89 dnartreb89    4096 10 sept. 14:18 optimiz
dnartreb89@dnartreb:~/2010$

Le script compresse les fichiers mais mogrify ne fait plus son effet, du coup jpegoptim se retrouve avec des fichiers trop grop au départ et le rendu est raté au possible. l'option resize qui fonctionnait dans un de mes script ne fonctionne plus la.

Je cherchait aussi du coup comment renommer les JPG et jpeg en jpg  pour simplifier le script.

Dernière modification par dnartreb89 (Le 10/09/2010, à 14:48)

Hors ligne

#8 Le 10/09/2010, à 13:40

dnartreb89

Re : Script pour l'optimisation des images pour publication sur le web

Bon, je comprend pas tout

Ça fonctionne bien de cette manière :

    #!/bin/bash

    # On crée le dossier optimiz
    mkdir optimiz

    # On y copie les images
    cp -f *.jpg optimiz/
    cp -f *.jpeg optimiz/
    cp -f *.JPG optimiz/
    cp -f *.png optimiz/

    # On s’y rend
    cd optimiz

    # On converti les PNG en JPG
    for i in *png; do convert $i $(basename $i jpg).jpg ; done

    # On efface les PNG
    rm *.png

    # On réoriente et on compresse un peu pour jpegoptim
    mogrify -auto-orient -quality 80 *.jpg
    mogrify -auto-orient -quality 80 *.jpeg
    mogrify -auto-orient -quality 80 *.JPG
    
    # On redimensionne les images en 1024×800 par exemple
    mogrify -resize 1024x800 *.jpg
    mogrify -resize 1024x800 *.jpeg  
    mogrify -resize 1024x800 *.JPG 
     
       
    # Compression des jpeg à 80 Ko environ
    jpegoptim 80 *.jpg
    jpegoptim 80 *.jpeg
    jpegoptim 80 *.JPG

    # Et on ressort
    cd ..

    # Et on informe
    zenity --info --text='Compressions Terminées'

Résultat trés propre et compression rapide.

Bon .... ?!!!!

Dernière modification par dnartreb89 (Le 11/09/2010, à 08:05)

Hors ligne