Trucs de geek : Convertir des images en ligne de commande

Comment changer la taille d'une image tout en préservant son ration hauteur / largeur ? ImageMagick apporte la solution.

Pour convertir des images de JPEG en PNG (pour les icônes des lanceurs du bureau sous KDE) vous pouvez ouvrir le fichier avec gimp et le réenregistrer dans un autre format mais le plus rapide est d'ouvir un terminal et de saisir :

$ convert mon_image.jpg mon_image.png

Il faut avoir précédemment installé ImageMagick via la commande :

$ sudo apt-get install imagemagick

Naturellement la commande fonctionne avec plusieurs fichiers :

$ mogrify -format jpg *.png

convertira en JPEG toutes les images PNG du répertoire où vous être placés.

Autres scripts pour réaliser une conversion sur un ensemble de fichiers :

En ligne de commande :

$ for g in *.jpg;do  convert $g ${g/jpg}png; done

L'instruction "${g/jpg}" ou "${g%jpg}" permet de supprimer la partie finale du nom du fichier et donc "${g/jpg}png" remplace l'extention "jpg" par "png" et force donc le changement du format au niveau d'Imagemagick.

ou en script bash :

for g in *.jpg;do  
 echo "Processing $g"
 convert $g ${g/jpg}png          
done

ou

for g in *.jpg;
do
 echo "Processing $g"
 convert -strip -resize "800x700" -unsharp 0,1.5,0.05  \
           $g ${g/.jpg}.png      
done

ou

for i in *BMP; do convert $i $(basename -s .BMP $i).jpg ; done

Réduire la taille de fichiers en les rennomant :

$ for i in *; do convert -resize 80% $i `basename $i .png`-nou.png; done

Si vous souhaitez ajouter votre marque, vous pouvez inscruster dans l'image un watermark (marque transparente) avec Imagemagick. Evitez les trucs du genre "Tous droits réservés", préférez publier vos images sous CC By-SA surtout pour des copies d'écran.

$ convert -font Helvetica -pointsize 60  -draw "gravity southeast fill black text 20,20 'Vacance 2012'" IMG_9062.jpg image.jpg

Cala ajoutera en bas à droite la mention concernant la date de vos vacances.

Si vous souhaitez mettre en noir et blanc des images vous pouvez utliser cette ligne de commande :

$ for i in *JPG; do convert $i -set colorspace RGB -colorspace gray $(basename -s .JPG $i)_NB.JPG ; done

Fait le 10/0/2013