Un des plus grands avantages des systèmes en ligne de commandes est l’automatisation. Il n’est pas question ici de retouche d’images mais de traitements en masse (par lot) de gros volumes d’images ou de photos.
On peut vouloir automatiser ce traitement d’images même si on ne dispose pas d’applications professionelles telles que Photoshop (voir un article d’Ovide sur les traitements par lots ici). Il est vrai que ces applications sont très onéreuses, si l’on veut être en règle au niveau de ses licences logicielles, il peut être interrêssant d’explorer les possibilités des programmes open source...
L’utilisation de scripts dans le langage du shell est très puissante pour piloter des programmes qui permettent de manipuler les images en ligne de commande, le présent article ne prétend pas tout explorer l’étendue de ces immenses possibilités, mais simplement approcher d’un peu plus prêt cet univers pour en comprendre un peu les rouages.
ImageMagick est une suite d’outils libres permettant de convertir, modifier, dimensionner, fusionner, retailler et transformer plus de 68 formats de fichiers graphiques. Elle est utilisée sur beaucoup de systèmes sous GNU/Linux et différents BSD.
Cette suite graphique comprend entre autre les programmes suivants :
import : capture d’une partie ou de la totalité de l’image de l’écran
identify : identification et description du format d’un ou de plusieurs fichiers image
convert : conversion d’un fichier image d’un format dans un autre
display : affichage, manipulation et traitement des fichiers image
animate : affichage d’une séquence d’image
montage : création d’un ensemble d’images, composé à partir de plusieurs autres images
mogrify : traitement d’une image ou d’une séquence d’images
combine : création d’une image par combinaison de plusieurs autres images
segment : segmentation d’une image
xtp : récupération, affichage ou impression de fichiers image en provenance d’un site éloigné, par l’intermédiaire d’un réseau, ou envoi dans le réseau de tels fichiers
Nous utiliserons certaines de ces commandes dans des scripts...
Nous allons utiliser l’excellent fink pour installer ce programme sur notre Mac.
Suivant la puissance de votre machine, l’installation peut être très longue, attendez vous à la mise en place de nombreux scripts et librairies graphiques. Malgrès tout, le jeu en vaut la chandelle, vous allez vous retrouver avec toute une série d’outils libres (donc gratuits), qui vont vous permettre une foule de manipulations sur les fichiers image.
Une fois installé, ImageMagick se pilote grâce à une série de commandes écrites directement en ligne de commande ou dans des scripts de shell. Passons en revue quelques unes de ces commandes.
identify fichier [ fichiers ... ]
Cette première commande est des plus simple, identify prend comme argument le nom et éventuellemnt le chemin de l’image à identifier.
Nous obtenons un résumé sommaire d’informations sur l’image.
Ajouter l’option -verbose permet d’obtenir une description complète du fichier graphique.
Cette fois la commande identify nous apporte plus d’informations avec la taille, profondeur de couleur, type de format, signature, nombre de couleurs utilisées, etc...
convert [ options ... ] fichier_source fichier_cible
La commande convert, dans son expression la plus simple, nécessite deux arguments, le fichier de départ, et le fichier d’arrivée. Elle va nous permettre entre autre de transformer le format des fichiers :
Convertir des images dans un autre format par lots depuis la ligne de commande :
On se rend dans le dossier d’images à convertir, on crée ensuite un dossier Tiffs si il n’existe pas avec la commande mkdir. Pour chaque fichier qui se termine par .jpg, on les converti dans le dossier Tiffs en jpg. Nous utilisons pour se faire l’instruction foreach pour créer une boucle (1).
La commande basename permet d’enlever une partie d’une chaine de caractères. Donc la commande basename photo.jpg .jpg retourne photo, auquel on rajoute l’extension .tif.
Tranformation de la taille d’images
L’option -geometry de convert permet d’automatiser le redimentionnement des images :
Là aussi nous utilisons une boucle foreach pour réaliser une copie de nos fichiers. C’est très pratique pour réaliser des apreçus d’images qui serviront sur un site web...
D’autres options peuvent être employées pour des transformations simples :
-rotate suivi d’un nombre de degrès.
-flip miroir vertical.
-flop miroir horizontal.
-negate pour inverser les couleurs.
-monochrome pour transformer les images en noir et blanc.
etc...
Il existe de nombreuse options à cette commande, je vous invite à lire le manuel pour vous rendre compte des possibilités de convert :
montage [ options ... ] fichiers_source fichier_cible
Grâce à la commande montage, il nous est possible par exemple de réaliser un index d’un dossier d’images, contenant un certain nombre d’informations, comme l’aperçu de chaque image en miniature, avec le nom, la taille en Kilo Octet, etc...
La création d’index peut être très utile pour obtenir un aperçu d’un dossier, on peut le réaliser avec la commande montage en une seule ligne :
Nous spécifions que le font du document sera blanc avec l’option background, puis on indique le répertoire à traiter et le nom du fichier de sortie.
Pour être vraiment utile, l’index doit au minimum comporter le nom du fichier source sous chaque vignette. Nous allons obtempérer et afficher des informations avec l’option label :
Les différents arguments de l’option label sont les suivants :
%f pour le nom du fichier
%b pour la taille en Kilo Octet
%h pour la hauteur en pixel
%w pour la largeur en pixel
%h pour le mot clef définissant le format d’image
On peut régler aussi la qualité de compression de chaque fichier inclu dans le fichier index avec l’option quality, l’option geometry permet quand à elle de spécifier la taille des vignettes et l’eur espacement.
Ce qui nous donne :
Voilà pour cette approche de la commande montage commande, cela parrait un peut complexe au début, mais lorsque l’on décompose les choses sont simples, il suffit de bien lire le manuel et comprendre à quoi servent les commandes et les options.
La liste des possibilités et des commandes d’ImageMagick est longue, je vous ai livré ici les principales fonctions, vous pouvez bien entendu poursuivre l’étude de cette suite graphique grâce au manuel en ligne de chaque commande...
J’ai réalisé une série de scripts qui permettent un certain nombre d’actions sur des dossiers d’images, vous aller pouvoir les copier et vous en servir sur votre machine, voyons cela de plus prêt :)
Placez ces scripts dans le dossier bin de votre dossier de départ, c’est un bon endroit pour stocker vos scripts, puis créez des alias de commande pour les appeler par un simple nom, il vous suffira ensuite de vous rendre dans un dossier d’image et de les invoquer en leur passant les arguments nécessaires.
Ce script permet d’identifier un certains nombre de paramètres sur les images d’un dossier, il est bien plus rapide que n’importe quel autre logiciel avec une interface graphique, pour obtenir la taille des images par exemple.
Ce script permet de créer des aperçus des images d’un dossier, on doit lui passer la taille de ceux-ci en argument.
Ce script permet de créer un fichier d’index image du contenu d’un dossier.
Ce script permet de convertir les image d’un dossier dans un autre format.
Sur ce principe, on peut imaginer des scripts pour réaliser automatiquement des pages Web personalisées à partir d’un dossier d’images, ou pour marquer des photos avec sa signature, etc... Rien ne vous empèche de modifier ceux livrés avec cet article, en ajoutant des arguments aux commandes, ou bien d’en inventer d’autres...
De plus ImageMagick peut être utilisé avec un certains nombre de scripts et logiciels, soit dédié Internet et Web, aux travers d’application Web en PHP par exemple, ou soit directement utilisé via les menus contextuels de Mac OS X, nous en reparlerons dans de prochains articles...
En tous cas ImageMagick est une bien belle suite d’outils libres pour traiter les images, on ne peut que féliciter chaleureusement les développeurs ;)
http://imagemagick.sourceforge.net/
Cette technique est pour le shell tcsh
Ces scripts ont un souci avec les noms comportant des espaces.
Il faut mettre des quotes inversées pour que la commande ne se trompe pas d’argument. (Astuce vue dans un forum debian)
Pour info, mon script pour convertir des scans en tif en jpg :
# !/bin/tcsh
# Conversion de toutes les images au format tiff (extensions .tif) au format jpg, qualité 90%
# Les images crées sont placées dans un sous dossier JPG du dossier de départ
mkdir JPG
# Boucle pour transformer les *.tif
foreach f ("`/bin/ls *.tif`")
echo fichier à convertir : $f
set g=JPG/`basename "$f" .tif`.jpg
echo Production de : `basename "$f" .tif`.jpg
/sw/bin/convert -quality 90 "$f" "$g"
end
J’ai trouvé ça : http://www.sungnyemun.org/imGUI/index.html
Mais bon vu que j’ai pas encore installé imageMagick je sais po ce que ça donne...
Apparement, cette application est capable si curl est installé, de télécharger et installer imageMagick !