Chafa : afficher images et animations dans le terminal en art ANSI/Unicode
https://github.com/hpjansson/chafa
https://github.com/hpjansson/chafa
📌 Chafa est un outil en ligne de commande qui convertit des images et des GIFs animés en graphismes ANSI ou Unicode affichables directement dans un terminal, permettant de visualiser des visuels sans quitter l’environnement texte. Ce projet s’adapte à une large gamme de terminaux, des téléscripteurs historiques aux émulateurs modernes, en utilisant intelligemment les blocs de caractères et les codes de couleur disponibles.
Chafa excelle dans la conversion d’images fixes et animées vers plusieurs formats de sortie terminaux : Sixels pour les terminaux compatibles, protocoles propriétaires comme Kitty et iTerm2 pour la haute fidélité, et mosaïques Unicode composées de caractères semi-graphiques pour une compatibilité maximale. L’outil sélectionne et combine automatiquement les symboles les plus adaptés parmi plusieurs plages Unicode pour optimiser la restitution, tout en supportant les caractères pleine largeur (chinois, japonais, coréen). Les modes de couleur couvrent l’intégralité du spectre, du Truecolor aux palettes 256 et 16 couleurs, en passant par les simple premier plan/arrière plan.
📌 Points clés :
- 🔧 Supporte la plupart des formats d’image courants, y compris les GIFs animés
- 🖼️ Sorties multiples : Sixels, Kitty, iTerm2, mosaïques Unicode
- 🎨 Modes de couleur Truecolor, 256 couleurs, 16 couleurs et FG/BG
- ⚡ Optimisations SIMD et multithreading pour des performances élevées
- 📚 API C stable et documentée pour l’intégration dans d’autres projets
- 🔧 Bindings Python et JavaScript/WebAssembly disponibles
L’installation se fait généralement via les gestionnaires de paquets des distributions Linux, car Chafa est largement packagé. Pour compiler depuis les sources, le projet utilise le classique trio autotools avec GLib comme dépendance principale. Les dépendances optionnelles incluent FreeType pour charger des glyphes depuis n’importe quelle police, et des bibliothèques pour décoder JPEG, SVG, TIFF et WebP. La compilation nécessite GCC, make, Autoconf, Automake et Libtool, suivis d’un simple ./autogen.sh && make && sudo make install.
Chafa se distingue par ses capacités de traitement d’images avancées directement en ligne de commande. Il gère la transparence alpha dans tous les modes de couleur, y compris les animations, et utilise l’espace colorimétrique DIN99d pour une meilleure sélection des couleurs lors de la conversion. L’outil peut également charger des glyphs depuis n’importe quel fichier de police supporté par Freetype, permettant des personnalisations poussées du rendu. Ces caractéristiques en font une solution adaptée non seulement pour visualiser des images, mais aussi pour composer de l’art ANSI ou préparer des impressions en noir et blanc.
Le projet est publié sous Lesser GPL version 3 ou ultérieure (LGPLv3+), ce qui permet de l’utiliser comme bibliothèque dans des projets propriétaires tout en garantissant que les modifications de la bibliothèque elle-même restent libres. La communauté s’organise autour d’un chat Matrix où les questions techniques et discussions autour des terminaux et graphismes sont les bienvenues. Des bindings maintenus par des tiers étendent l’utilisation de Chafa à Python et JavaScript, ce dernier étant compilé en WebAssembly pour fonctionner dans les navigateurs web et Node.js.
Concrètement, Chafa permet d’intégrer facilement des visuels dans des scripts shell, des interfaces TUI, ou simplement de partager des captures d’écran lors de sessions d’assistance en ligne de commande. C’est un outil qui témoigne de la vitalité de l’écosystème terminal moderne, capable de reproduire des expériences graphiques sans quitter l’environnement texte.
En savoir plus sur Clement MONDARY
Subscribe to get the latest posts sent to your email.
