#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.
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.
Enfin, si ça intéresse quelqu'un, à mon avis cette fonctionnalité pourrais servir à beaucoup.
Bonne journée à tous !
Hors ligne
#2 Le 09/09/2010, à 21:06
- webgerald
Re : Script pour l'optimisation des images pour publication sur le web
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 , 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.
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 ... , escuse moi.
:|:D;):cool:
Vu l'heure de ton post, tu doit avoir un petit creux je pense !
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