Avec l'arrivée du printemps aujourd'hui j'ai envie de faire un peu de traitement d'image. Je vais donc vous expliquer comment incruster une image avec les deux outils de traitement d'image en ligne de commande : ImageMagick et GraphicsMagick.
Pour infos la grande différence entre GraphicsMagick et ImageMagick est surtout une question de performance ( cf : Benchmark GraphicsMagick vs ImageMagick ).
Personnellement j'utilise GraphicsMagick car c'est le plus performant des deux, mais les fonctionnalités sont sensiblement les mêmes et leurs liens de parenté est évident quand on regarde le format des lignes de commande.
Installation de GraphicsMagick
pcr@home:~$ sudo aptitude install graphicsmagick
Installation de ImageMagick
pcr@home:~$ sudo aptitude install imagemagick
Je vais vous montrer comment incruster une image dans un cas d'utilisation assez courant : Ajouter un image dans une preview de vidéo.
Image de départ
Le nom de ce fichier est source.jpg
Image à incruster
Le nom de ce fichier est play.png et le fond de l'image est transparent.
Incrustation d'image avec GraphicsMagick
pcr@home:~$ gm composite -gravity center play.png source.jpg compose.jpg
Incrustation d'image avec ImageMagick
pcr@home:~$ composite -gravity center play.png source.jpg compose.jpg
Image composée
Que ce soit pour ImageMagick ou GraphicsMagick l'option gravity permet de choisir l'emplacement de l'image à incruster par rapport à l'autre image.
Les valeurs possibles de gravity sont :
- NorthWest pour que l'image soit en haut à gauche.
- North pour que l'image soit en haut et centrée horizontalement.
- NorthEast pour que l'image soit en haut à droite.
- West pour que l'image soit à gauche et centrée verticalement.
- Center pour que l'image soit centrée verticalement et horizontalement.
- East pour que l'image soit à droite et centrée verticalement.
- SouthWest pour que l'image soit en bas à gauche.
- South pour que l'image soit en bas et centrée à l'horizontal.
- SouthEast pour que l'image soit en bas à droite.
Incrustation d'image avec resize de l'image à incruster
pcr@home:~$ gm composite -resize "20x20>" -gravity center play.png source.jpg compose.jpg
En ajoutant -resize "20x20>" on retaille l'image play.png avant de l'insérer dans compose.jpg. Le > signifie que le retaillage d'image est effectif uniquement si la hauteur ou la largeur est plus grande que la taille indiqué dans l'option resize, l'aspect ratio est conservé.
Image : Timothy K Hamilton