Petit programme C ++ pour afficher des images dans un terminal (moderne) à l'aide de codes RGB ANSI et de caractères graphiques de bloc Unicode.
Il existe divers outils similaires (tels que timg ) qui utilisent le caractère de demi-bloc Unicode pour afficher deux pixels 24 bits par cellule de caractères. Ce programme améliore la résolution en mappant des cellules de 4x8 pixels à différents caractères Unicode, en utilisant l'algorithme suivant pour chaque cellule 4x8 pixels de l'image (potentiellement réduite):
Voir la différence en désactivant cette optimisation à l'aide de l'option -0 . Ou jetez un œil à l'image de comparaison à la fin de ce texte.
tiv [options] < filename > [ < filename > ...] La coquille élargira les caractères génériques. Par défaut, les miniatures et les noms de fichiers seront affichés si plusieurs image sont fournies. Pour une liste d'options, exécutez la commande sans aucun paramètre ou avec --help .
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterImportant
Toutes les méthodes d'installation nécessitent l'installation d'ImageMagick, une dépendance requise. La plupart des gestionnaires de packages devraient l'installer automatiquement.
Notre MakeFile ne prend actuellement en charge que g++ . Il devrait être possible de compiler tiv manuellement en utilisant l'un de vos compilateurs préférés qui prennent en charge les en-têtes C ++ 17 et UNIX ( ioctl.h et sysexits.h , en particulier) ou windows.h . Les PR sont les bienvenus.
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src
make
# To move the tiv binary into your PATH (hopefully), also do
sudo make install N'oubliez pas d'installer ImageMagick ... sur Linux basé sur Debian via sudo apt install imagemagick et sur MacOS via brew install imagemagick .
brew install tivComme la coque Apple d'origine prend en charge uniquement le mode 256 couleurs (-256) et qu'il semble y avoir un espacement de ligne supplémentaire, déformant l'image, nous vous recommandons également d'installer ITerm2:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (mais il casse également macOS), voir # 103TIV peut être utilisé comme API. Donc, si vous avez toujours voulu gérer vos FP préférés dans un shell, c'est l'occasion.
Tout le code utile en tant que bibliothèque est isolé dans TIV_LIB.H et TIV_LIB.CC.
Le point d'entrée principal est
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)L'appel prend une fonction std :: qui permet au code TIV de demander des pixels à votre framebuffer.
À partir de ce FrameBuffer, l'appel interrogera les pixels pour un rectangle de 4x8 pixels, où X0 et Y0 définissent le coin supérieur gauche. L'appel recherche le meilleur caractère graphique Unicode et couleurs pour approximer cette cellule de l'image et les renvoie dans une structure Chardata.
Je suis heureux d'accepter les contributions utiles sous la licence Apache 2.0, mais ...
La plupart des exemples ont été tournés avec la version Java de ce programme, qui devrait avoir une sortie équivalente mais plus lente par millénaires au cours des années de processeur.
Si plusieurs images correspondent à la spécification du nom de fichier, les miniatures sont affichées.
Pour l'exemple ci-dessous, l'image supérieure a été générée avec l'optimisation des caractères désactivée via l'option -0 .
Vous êtes libre d'utiliser ce code sous le GPL (3 ou version ultérieure) ou la version 2.0 de la licence Apache. Nous incluons la bibliothèque CIMG, qui est sous licence sous CECILL 2.0 (près de GPL et compatible avec elle) ou [CECILL-C] (https://spdx.org/licenses/cecill-c) (près de LGPL et compatible avec Apache).