Un pense-bête

Imagemagick

La boite à outil ultime en matière de traitement d'images en ligne de commande. Imagemagick est en ensemble d'outils vous permettant de manipuler des images via des scripts. L'immense avantage est donc la possibilité de traiter des images en masse.

Cela m'a été particulièrement utilie pour convertir une bonne soixante d'images ratée du fait d'une balance des blancs non réglée et laissée à tungtène. Le script tenait sur une ligne

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

Précisons que basename renvoie le nom du fichier sans les références aux répertoire et que l'option -s permet de supprimer ce qui est indiqué. Si on a un fichier dont le nom est /home/jfd/mon_image.JPG, on se retrouve avec mon_image seulement.

Autre possibilités d'utilisation d'IM :

Obtenir des informations sur une image :

# identify -ping mon_image.png

donne par exemple :

DSCF2390.JPG JPEG 2816x1584 2816x1584+0+0 8-bit DirectClass 1.52MB 0.000u 0:00.000

ou beaucoup plus avec le mode verbose (identify -verbose)

  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Class: DirectClass
  Geometry: 2816x1584+0+0
  Resolution: 72x72
  Print size: 39.1111x22
  Units: PixelsPerInch
  Type: TrueColor
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit

Plus fort : récupérer la liste des couleurs utilisées :

# identify -list color DSCF2390.JPG

donne (en partie) :

Name                  Color                                         Compliance
-------------------------------------------------------------------------------
AliceBlue             srgb(240,248,255)                             SVG X11 XPM
AntiqueWhite          srgb(250,235,215)                             SVG X11 XPM
AntiqueWhite1         srgb(255,239,219)                             X11
AntiqueWhite2         srgb(238,223,204)                             X11

Plus classique, IM peut convertir une image d'un format dans un tout à partir du moment où il connait les format d'entrée et de sortie. Exemple :

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

ou

# convert *.jpg ma_sortie.pdf

Vous pouvez au cours de la conversion ajuster le taux de compression et donc la qualité de l'image avec l'option : -quality 96. Les taux de conversion sont expliqués ici. Pour résumer plus le chiffre est grand et moins le fichier sera compressé.

Redimensionner une image :

# convert -resize 1000x DSCF2390.PNG DSCF2390_SZ.PNG

Comme vous pouvez le constater je n'indique que la largeur désirée. IM calcule automatiquement la hauteur afin de conserver la proportionnalité de l'image. Vous pouvez par contre n'indiquer que la hauteur :

# convert -resize x1000 DSCF2390.PNG DSCF2390_SZ.PNG

Si vous souhaitez forcer les hauteur et largeur vous n'y arriverai pas. Seule la valeur pour la hauteur sera retenue, la largeur sera elle calculée.

Créer une icône :

# convert -colors 256 -resize 16x16 DSCF2390.PNG favicon.ico

Transformer une image en niveau de gris :

# convert -type Grayscale IMG_3875.JPG image-noir-gris.jpg

Ajouter une bordure :

# convert -bordercolor Transparent -border 1x1 IMG_3875.JPG image-bordure.png

A la place de Transparent vous pouvez obtez pour une couleur comme BLUE ou #000000 (noir).

Créer un négatif de l'image (Sachant que les jeunes ne savent pas ce que c'est) :

# convert -negate IMG_3875.JPG image-negate.png

Retourner une image :

# convert -flip IMG_3875.JPG image-flip.png

Rotation de 90 degrés vers la droite :

# convert -rotate 90 IMG_3875.JPG image-rotate.png

Vers la gauche on fait une rotation de "-90".

Ajouter du texte :

# mogrify -fill white -pointsize 16 -annotate +685+590 'Authors Name' IMG_3875.JPG

Attention cela écrit directement le texte. Faite une sauvegarde avant.

Ajouter un commentaire :

# convert -comment "www.tux-planet.fr" IMG_3875.JPG IMG_3875_COMM.JPG

Réaliser un montage de vignettes :

# montage 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janvier.png

qui donne :

Il possible de mettre en valeur les images avec une ombre en ajoutant l'option "-shadow". Cela vous donne :

Si vous souhaitez conserver la taille des images traitées, vous devez ajouter l'option "-geometry" en n'indiquant pas la taille de l'image en sortie :

# montage -shadow -geometry +20+20 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janvierge.png

qui donne (en réduit) :

Le +20+20 fournit l'espacement horizontal et vertical entre les photos.

Pour avoir les images sur une seule ligne, on ajoute l'option "-tile" :

#  montage -shadow -tile 4x1 -geometry +20+40 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janvierge.png

qui donne :

Pour la même chose avec une bordure, on ajoute l'option "-frame 5" :

# montage -shadow -tile 4x1 -frame 15 -geometry +20+40 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janviergebg.png

qui donne :

Autre type de bordure : border.

# montage -shadow -border 5 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janvierbg.png

qui donne avec ombre :

et sans ombre :

Avec un fonds en couleur bleue : "-background lightblue" :

# montage -border 5 -background lightblue 01012014_SZ.JPG 01022014_SZ.JPG 01032014_SZ.JPG 01042014_SZ.JPG janvierb.png

qui donne :

Fait le 02/01/2015.