212 votes

Comment faire pour que mon terminal affiche des images graphiques ?

C'est une maquette rapide que j'ai copiée et collée. J'imagine que cela peut être super cool et utile.

Quelque chose de ce genre existe-t-il déjà ?

http://imgur.com/Z3DbS

89voto

joelostblom Points 1155

Mise à jour 2021-03-02

Viu

Viu est un visualisateur d'images qui peut afficher des images en utilisant l'approche kitty, iterm, ou libsixel. Il dispose également d'un mode de repli pour afficher les images ascii en bloc.


Mise à jour 2018-12-31

kitty icat

L'émulateur de terminal Kitty, qui est tout à fait génial, a une icat pour afficher les images (ne fonctionne pas dans tmux). Kitty permet également aperçu des images dans ranger (un gestionnaire de fichiers en terminal), qui est la méthode que j'utilise actuellement le plus souvent (fonctionne dans tmux).


1. w3m

Alors que l'objectif principal de w3m est de fournir une navigation web en console, il peut également être utilisé pour visualiser des images en terminal. Les paquets pertinents à installer sont w3m y w3m-img (sur Ubuntu au moins). Vous devez ensuite désactiver la visionneuse d'images externe en passant le code suivant -o ext_image_viewer=0 ou en allant dans le menu d'options ('o') à l'intérieur de w3m et désactiver la visualisation des images externes.

Maintenant, en tapant w3m <image_name> affichera l'image dans le terminal. w3m utilisera toute la fenêtre du terminal, de sorte que vous ne pourrez pas voir vos commandes précédentes avant de quitter w3m (penser less pas cat ). Notez que si l'image est trop grande pour tenir dans la fenêtre du terminal, elle sera quand même ouverte en externe (dans imagemagick pour moi). Notez également que même si j'ai lu à plusieurs endroits que w3m Les images en ligne ne fonctionneraient pas pour gnome-terminal il fonctionne bien pour moi. C'est un peu ennuyeux que vous deviez taper q deux fois pour fermer d'abord l'image et ensuite w3m .

2. Terminologie

tycat fait partie de terminology et affiche des images comme cat affiche les fichiers texte et comme imgcat fonctionne pour iTerm2 sous OS X.

3. libsixel + mlterm/xterm

Installer libsixel-bin et tout terminal compatible (exemples mentionnés sous Les "exigences" de ce readme par exemple mlterm o xterm compilées avec les bons drapeaux et vous pouvez visualiser les images avec la fonction img2sixel commande. Ces deux paquets sont disponibles dans les dépôts Ubuntu.

4. FIM

Alors il y a FIM qui est une version améliorée de fbi . La page d'accueil indique qu'il peut afficher des images non seulement avec le framebuffer, mais aussi avec X. Cependant, il ne s'installe pas pour moi. Editar J'ai réussi à le faire fonctionner en téléchargeant la version 0.5 du tronc, en exécutant ./configure --disable-exif puis en supprimant temporairement anaconda (distribution Python) de mon chemin car il provoquait un conflit avec libpng avant d'exécuter make y sudo checkinstall (vous devez écrire un numéro de version manuellement avec checkinstall mais il est plus facile à enlever que make install ). Cependant, les images sont toujours affichées dans une fenêtre séparée, bien que, comme pour l'option fbi vous n'avez pas besoin d'être sous X, ce qui est plutôt cool.

5. jupyter-qtconsole

Vous pouvez également être créatif et utiliser la console jupyter-qtconsole comme console système, la configurer pour afficher les graphiques en ligne ( %matplotlib inline ) et ensuite afficher l'image en utilisant matplotlib \=)

6. feh

feh utilise X pour afficher les images, mais feh -x les fait apparaître dans une fenêtre sans bordure qui peut être rapidement fermée avec la touche q o x . Bien que les images ne soient pas affichées dans le terminal, j'ai pensé que cela valait la peine d'être mentionné car c'est la méthode la moins intrusive que j'ai trouvée jusqu'à présent et celle que j'utilise jusqu'à présent. gnome-terminal obtient un imgcat / tycat équivalent.

80voto

user569825 Points 917

Peut-être caca est ce que vous voulez. Pour images :

sudo apt-get install caca-utils
cacaview /PATH/TO/image.jpg

Assurez-vous que votre fenêtre de terminal est suffisamment grande.

Par exemple, voici comment cette image est affiché dans cacaview :

Screenshot

Je l'utilisais parfois pour m'amuser regarder des vidéos en ASCII dans mplayer :) Comme ça :

mplayer -vo caca /PATH/TO/video.mpg

56voto

Stefan Haustein Points 771

J'ai écrit un petit outil C++ pour convertir les images en codes de contrôle RVB ANSI et en caractères graphiques en bloc Unicode pour les terminaux modernes supportant ces fonctionnalités :  https://github.com/stefanhaustein/TerminalImageViewer

Installation :

git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install

Utilisation :

tiv <image(s)>

Editar : Modification des liens / instructions vers le dépôt principal ; ajout de l'utilisation.

Exemples :

TerminalImageViewer

43voto

hackerb9 Points 1716

J'ai fait une très rapide et simple fonction Shell d'une ligne qui résout la question originale exactement comme demandé dans les mockups. Notez que les captures d'écran ci-dessous sont des images réelles, pas des maquettes.

function lsix() { montage -tile 7x1 -label %f -background black -fill white "$@" gif:- | convert - -colors 16 sixel:-; }

Screenshot of using the lsix command

Les prérequis sont minimes : xterm et ImageMagick ( apt-get install xterm imagemagick ). Votre xterm doit être en mode vt340, ce que vous pouvez définir soit dans ~/.Xresources ou à partir de la ligne de commande ( xterm -ti vt340 ).

Limitations : Seules 16 couleurs sont utilisées sur todo images montrées. Cela signifie qu'une image peut être plus belle lorsqu'elle est visualisée seule. (Voir ci-dessous).

Screenshot showing 16 color limitation

UPDATE

Bien que ma réponse ci-dessus soit toujours correcte, j'ai créé un Shell Shell encore meilleur qui est capable de faire un 'ls' d'images directement dans un terminal. Il y a toutes sortes d'améliorations que j'ai ajoutées pour que les images soient plus belles (plus de couleurs, alpha correct, orientation JPEG, gestion de beaucoup d'images, disposition compacte des tuiles,...). C'est encore un programme assez petit, mais j'ai pensé que les gens pourraient vouloir le personnaliser, donc je l'ai mis sur github : https://github.com/hackerb9/lsix .

32voto

Amith KK Points 13017

Vous ne pouvez pas le faire dans une fenêtre de terminal, mais vous pouvez le faire dans un fichier Console Linux mit fbi . Vous avez besoin d'un framebuffer pour que cela fonctionne :

sudo apt-get install fbi

Allez dans une console Linux (en utilisant Ctrl + Alt + F1 ) et saisissez fbi <filename>

Il devrait afficher votre image.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X