Scripts Shell

Les outils graphiques ImageMagick

Automatiser la manipulation d’images sur Mac
Première publication : .
Mise en ligne: 14 novembre 2003.
Modifié le : 11 juin 2007.
Par Frédéric Guerrier
Les outils graphiques ImageMagick, Shell, , ImageMagick, , Images, , Script, , Image, , Open Source, , Libre

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...

Installer ImageMagick avec fink

Nous allons utiliser l’excellent fink pour installer ce programme sur notre Mac.


% fink install imagemagick

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.

Les commandes ImageMagick

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.

Identifier une image

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.


[al:~/Pictures] gunjin% identify test.jpg
test.jpg JPEG 623x150+0+0 DirectClass 8-bit 38.8k 0.0u 0:01

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.


[al:~/Pictures] gunjin% identify -verbose test.jpg
 Image: test.jpg
 Format: JPEG (Joint Photographic Experts Group JFIF format)
 Geometry: 623x150
 Class: DirectClass
 Type: true color
 Depth: 8 bits-per-pixel component
 Colors: 1038
 Resolution: 72x72 pixels/inch
 Filesize: 38.8k
 Interlace: None
 Background Color: grey100
 Border Color: #DFDFDF
 Matte Color: grey74
 Dispose: Undefined
 Iterations: 0
 Compression: JPEG
 comment: AppleMark
 signature: 83b651090dd33ddbacc314cc5121ba932ea40afc509458b4bfe614de6b5d1334
 Tainted: False
 User Time: 0.0u
 Elapsed Time: 0:01

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...

Convertir une image

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 :


% convert image.jpg image.tif

% convert image.jpg GIF:image.gif

% convert image.jpg GIF87:image_2.gif

-  Convertir des images dans un autre format par lots depuis la ligne de commande :


% cd /Chemin/MonDossierImages/
% mkdir -p Tiffs
% foreach f (`/bin/ls *.jpg`)
foreach -> convert $f Tiffs/`basename $f .jpg`.tif
foreach -> end

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 :


% cd /Chemin/MonDossierImages/
% mkdir -p Mini
% foreach f (`/bin/ls *.jpg`)
foreach -> convert -geometry 640 $f Mini/$f
foreach -> end

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 :


% man convert

Montage d’images

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 :


% montage -background white  Mes_Images/*.jpg index.jpg

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 :


% montage -background white  -label "%f" Mes_Images/*.jpg index.jpg

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.


% montage -background white -label "%f\n%wx%h\n%b" -quality 100 -geometry 100 50 50  Mes_Images/*.jpg index.jpg

Ce qui nous donne :

(JPEG)
Index d’un dossier d’images

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...

Scripts d’automatisation

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.

idimg.sh

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.

miniimg.sh

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.

indeximg.sh

Ce script permet de créer un fichier d’index image du contenu d’un dossier.

convertimg.sh

Ce script permet de convertir les image d’un dossier dans un autre format.

Conclusion

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 ;)

Lien

http://imagemagick.sourceforge.net/

 

Cette technique est pour le shell tcsh

Envoyer
L'e-mail du destinataire :

Votre Nom :

Votre e-mail :


 |  Imprimer |  Réagir
Auteur : Frédéric Guerrier
Site : fredericguerrier.com -> http://www.fredericguerrier.com
Bio : Webdesigner, enseignant, journaliste spécialisé.
Frédéric Guerrier
> Les outils graphiques ImageMagick
Par denum le 29 juin 2004 - Menu du forum
 

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

 
>une GUI pour ImageMagick ?
Par iben le 22 novembre 2003 - Menu du forum
 

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 !

 
GUI
 
Copyright 2002-2010 xrings - Tous droits réservés - Mentions légales - Propulsé par SPIP - Création Web par FG