16 Couleurs

16 Couleurs – graphisme & jeu vidéo

Des exemples d’automatisation de traitement d’images avec ImageMagick

Poster un commentaire

J’avais l’an dernier évoqué ImageMagick, un logiciel de traitement d’images en ligne de commande aussi puissant que parfois difficile d’approche. Dans ce nouveau billet je présente quelques exemples d’utilisation du programme qui m’ont permis d’économiser pas mal de temps ces derniers mois.

À la base le logiciel se contrôle comme suit, après avoir ouvert une fenêtre de ligne de commande dans Windows (ou Mac ou Linux) :

convert image1.jpg actions image2.jpg

On ouvre l’image image1.jpg, effectue une ou plusieurs manipulations dessus puis la sauvegarde sous le nom d’image2.jpg.

Créer un GIF animé

Créer un GIF animé avec ImageMagickUn cas de figure assez fréquent : une animation est exportée d’un logiciel quelconque (Animate, After Effects…) sous la forme d’une suite d’images et on souhaite la convertir en GIF animé. Une opération somme toute très basique, mais étonnamment pas si simple en pratique : l’exportation native de GIF animé dans Animate n’est souvent pas exploitable (une couleur sombre est systématiquement choisie comme transparente même si on ne veut pas de transparence), Adobe Media Encoder pas vraiment idéal en pratique (aucune optimisation du GIF donc un résultat au poids rapidement énorme) et Photoshop trop lent si on veut pouvoir enchaîner les conversions. Avec ImageMagick il suffit de taper la commande suivante dans le répertoire où se situe les images :

convert *.png -loop 0 -layers optimize -set delay 3 anim.gif
  • -loop 0 permet à l’image de boucler de manière perpétuelle.
  • -layers optimize indique à ImageMagick qu’il doit optimiser l’animation en actualisant seulement les pixels qui changent d’une frame à l’autre.
  • -set delay 3 indique la durée de chaque frame en centièmes de seconde. Ici 0.03 seconde, donc un framerate d’environ 33 images par seconde.

En laissant la fenêtre Command Prompt ouverte, on peut obtenir un nouveau GIF animé à chaque fois qu’on réexporte les images en appuyant juste sur la flèche du haut puis Entrée.

Recolorer en blanc une série d’image avec une couche alpha

Recolorer en blanc une série d'image avec une couche alphaUne requête un peu plus spécifique mais qui s’est manifestée lors du développement d’un jeu pour Peak : une centaine de sprites en 32 bit devaient être recolorés en blanc tout en conservant la transparence. Facilement réalisable avec Photoshop, mais pas beaucoup plus compliqué avec ImageMagick avec l’avantage de la flexibilité et de la rapidité. Attention, cette commande remplace tous les PNG dans le répertoire.

FOR %a in (*.png) DO convert %a -brightness-contrast "100 0" %a
  • FOR %a in (*.png) DO crée une boucle qui traitera tous les PNG du répertoire (%a est la variable pour les noms de fichiers, répétée telle quelle à la fin de la commande, d’où l’écrasement des fichiers d’origine).
  • -brightness-contrast « 100 0 » augmente la luminosité au maximum et réduit le contraste au minimum, donc toutes les valeurs deviennent blanches.

Redimensionner une série d’images et les recolorer avec une palette prédéfinie

Redimensionner une série d’images et les recolorer avec une palette prédéfinie avec ImageMagick

Ici j’exporte une animation sous forme d’une série d’images que je souhaite ensuite convertir vers une résolution et une palette spécifiques à un ordinateur 8 bit. La commande mogrify utilisée est d’un usage similaire à convert, à la différence que les images d’origine sont systématiquement écrasées.

mogrify -filter "Box" -resize "160x200!" -dither None -remap c:\tmp\nouvelle_palette.png *.png
  • -filter « Box » choisit le filtre « Box » pour la commande resize qui suit. Ce filtre donne les meilleurs résultats dans ce cas de figure (réduction de pixel art sans bavure). Voir la documentation très détaillée sur ce sujet.
  • -resize « 160×200! » indique la résolution souhaitée. Le point d’exclamation signifie que le ratio d’origine sera ignoré.
  • -dither None pour éviter de dithering (dégradés) lors de la conversion.
  • -remap c:\tmp\nouvelle_palette.png : les images sont recolorées avec la palette issue de cette image.

Tripler la résolution d’une série d’images

Tripler la résolution d'une série d'images avec ImageMagick

Drag & drop avec ImageMagickImageMagick permet ici de redimensionner et renommer les images avec un simple drag and drop des fichiers sur une icône du bureau Windows, ce qui est extrêmement pratique. Je me sers de ce script pour modifier pour Twitter des captures d’écran en 320×200 (généralement réalisées pour Demozoo ou Mobygames) qui font un peu timbre-poste sur nos écrans modernes. Il suffit de créer un fichier .BAT avec le contenu suivant :

if [%1]==[] goto :eof
:loop
convert %1 -scale 300%% "%~dpn1_x3%~x1"
shift
if not [%1]==[] goto loop

Le format est un peu différent puisqu’il s’agit de supporter le drag and drop de plusieurs fichiers sur l’icône du fichier .bat.

  • if [%1]==[] goto :eof vérifie si la liste des fichiers transférée n’est pas vide et termine le script si c’est le cas.
  • :loop : label de la boucle
  • convert %1 -scale 300%% triple la résolution
  • « %~dpn1_x3%~x1 » ajoute « _x3 » à la fin du nom de fichier pour éviter d’écraser l’image d’origine. La syntaxe un peu cryptique permet juste de manipuler les différents éléments du nom de fichier (voir ici pour plus de détails).
  • shift : on itère dans la boucle
  • if not [%1]==[] goto loop : on continue tant qu’on n’a pas traité tous les fichiers

Pour changer l’icône du fichier batch, le plus simple est de placer sur le bureau non pas directement le fichier batch, mais plutôt un raccourci vers celui-ci. Il suffit ensuite de faire un clic droit sur l’icone et de cliquer sur « changer l’icône » dans l’onglet « raccourci ».

Il est possible d’effectuer des opérations beaucoup plus complexes avec ImageMagick mais j’espère que ces quelques exemples simples auront aidé à vous convaincre de l’utilité du programme. La prise en main est ardue mais heureusement il existe une documentation en ligne très complète qui permet de ne pas avoir à trop tâtonner.

La documentation officielle pour aller plus loin (en anglais) :

Auteur : HP

Professionnel de l'industrie vidéoludique depuis 14 ans, j'écris principalement sur l'infographie, le business des jeux vidéo et la demoscene.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s