Conversion d’images avec ImageMagick

illustrations illustrations illustrations illustrations illustrations illustrations illustrations
post-thumb

Publié le 10 novembre 2022 par Andrew Owen (5 minutes)

Photoshop est vieux. Vraiment vieux. En tout cas, en termes informatiques. À l’heure où j’écris ces lignes, il en est à la version 24.0. Il a été développé à l’origine pour le Mac en 1987 par Thomas Knoll, étudiant en doctorat à l’université du Michigan, et son frère John, qui travaillait pour Industrial Light & Magic. Photoshop est un éditeur de graphiques à trame (images en pixels). En raison de son ancienneté, il possède des fonctions de rendu d’images 24 bits (16 millions de couleurs) jusqu’à des palettes limitées (caractéristiques courantes des ordinateurs dans les années 1980), qui sont absentes ou difficiles à utiliser dans d’autres programmes de manipulation d’images.

Un autre logiciel datant de 1987 est ImageMagick. Il a été créé par John Cristy chez DuPont pour convertir des images 24 bits en images 8 bits (256 couleurs). En 1990, Adobe est devenu l’éditeur de Photoshop, et DuPont a cédé les droits d’auteur de son outil à ImageMagick Studios LLC, une organisation à but non lucratif “dédiée à la mise à disposition gratuite de solutions logicielles d’imagerie”. Ainsi, si vous ne pouvez pas vous permettre de payer plus de 200 $ par an pour un abonnement à Creative Cloud juste pour convertir des images 24 bits en images faiblement colorées, ImageMagick est la solution évidente.

Un matériel qui ne date pas de 1987, mais qui est conçu comme tel, est le Chloe 280SE (le projet d’ordinateur rétro dont je parlerai sans fin si l’occasion m’en est donnée). Le projet est toujours en cours de développement, et à l’heure actuelle, son mode graphique de plus haute résolution est incroyablement compliqué. Il dispose d’une image bitmap non linéaire de 256×192 pixels. Celle-ci est recouverte d’une carte d’attributs non linéaire de 32×192 cellules (chacune d’une taille de 8×1 pixels) qui déterminent la couleur du premier plan et de l’arrière-plan. Chaque cellule de 8 pixels est rendue en associant un octet de bitmap à un octet d’attribut. L’octet d’attribut est divisé en trois parties. Les deux bits les plus élevés sélectionnent l’une des quatre tables de recherche des couleurs (CLUT). Les trois bits du milieu définissent l’une des 8 couleurs d’arrière-plan et les trois bits les plus bas définissent l’une des 8 couleurs de premier plan. Les couleurs d’arrière-plan et de premier plan sont définies indépendamment. Cela donne 16 couleurs par CLUT, pour un maximum de 64 couleurs à l’écran. Cependant, il n’est pas possible de combiner des couleurs provenant de différentes CLUT. Les couleurs sont choisies dans une palette fixe de 256 couleurs basée sur la moitié de la palette RVB 9 bits (3 bits sont utilisés pour le rouge et le vert, mais seulement deux pour le bleu). Elles sont stockées dans l’ordre GRB (MSB). Une image complète se compose d’une image bitmap de 6K, d’une carte d’attributs de 6K et d’une palette de 64 octets.

J’ai dit que c’était compliqué. Heureusement, Edward Cree a écrit un outil de conversion d’images pour Linux (scrplus) et Klaus Jahn en a fait une version pour Windows (Image2ULAplus). Ces deux outils peuvent être utilisés sur un Mac avec une solution de virtualisation appropriée. Cependant, les résultats peuvent varier considérablement. Voici le processus de pré-conversion si vous avez accès à une version quelconque de Photoshop.

  1. Mettez à l’échelle l’image que vous souhaitez convertir en 256×192 pixels.
  2. Tramez l’image pour obtenir 128 couleurs uniformes.

En règle générale, la méthode Floyd-Steinberg ou la méthode de diffusion donne de meilleurs résultats que la méthode des motifs lors de la réduction de la profondeur des couleurs. Cependant, le tramage semble être la meilleure méthode pour réduire la visibilité des cellules d’attributs. La palette comporte 8 niveaux pour le rouge et le vert, mais seulement 4 pour le bleu. Réduire la gamme à 128 couleurs uniformes revient à donner à chaque couleur 5 niveaux dans l’image d’entrée. Je ne sais pas pourquoi, mais cela semble donner les meilleurs résultats de conversion.

Le processus de conversion après ouverture de l’image d’entrée dans Image2ULAplus est le suivant:

  1. Désactiver:
    • Réduire les couleurs à 8 bits.
    • Utiliser le dithering
    • Créer un écran HAM256
    • Étirer à la taille SCREEN$.
  2. Activer:
    • Calculer la palette
    • CLUTs: 0, 1, 2, 3
    • Créer l’écran Timex
  3. Fixer le nombre maximum de couleurs à 64.
  4. Cliquez sur Rendu.
  5. Enregistrez l’image au format .SCR.

J’ai une copie sous licence de Photoshop CS6 sur un MacBook Air 2010. Mais je n’ai pas vraiment envie de la sortir de son espace de stockage à chaque fois que j’ai besoin de convertir une image. Voici donc comment utiliser ImageMagick à la place. Tout d’abord, vous devez l’installer (à moins qu’il ne soit préinstallé dans votre distribution Linux): Sur Ubuntu, vous pouvez utiliser sudo apt install imagemagick et l’invoquer avec la commande convert. Sur macOS, la façon la plus simple de l’installer est d’utiliser Homebrew avec brew install imagemagick. Sous Windows, vous pouvez télécharger un exécutable.

En expérimentant, j’ai trouvé que le meilleur réglage pour la conversion vers le Chloe 280SE est: magick input.jpg -resize 256x192\ ! -ordered-dither o8x8,5,5,4 output.gif. Cela permet de redimensionner l’image en 256×192 (en ignorant le rapport hauteur/largeur) et d’effectuer un tramage ordonné (motif) sur l’image en utilisant un motif 8×8 (qui fonctionne bien avec des attributs 8×1). Il applique une palette uniforme avec 5 niveaux de rouge et de vert, et 4 niveaux de bleu (128 couleurs uniformes dans Photoshop donnent environ 5 niveaux pour chaque couleur). Les résultats varient, mais pour l’image test que j’ai utilisée dans tous mes tutoriels, ImageMagick fait mieux que Photoshop.

Il ne s’agit là que d’un cas d’utilisation. À l’époque où j’étais rédacteur technique, je l’utilisais principalement pour rendre les images .PNG aussi petites que possible afin de les inclure dans les fichiers d’aide en ligne. Et ce n’est qu’une infime partie de ce qui est possible avec ImageMagick. Heureusement, il existe une bonne documentation et une [communauté] active (https://github.com/ImageMagick/ImageMagick/discussions “ImageMagick community”).

Réflexion après coup

Il existe un petit outil en ligne de commande appelé jpegoptim qui utilise ImageMagick en arrière-plan pour minimiser les fichiers jpeg en supprimant les métadonnées. Il est disponible dans la plupart des distributions Linux et sur macOS en utilisant HomeBrew.

Image: Détail de la couverture de “Nubia Coronation Special” par David Mack. Copyright © DC.