web-dev-qa-db-fra.com

Comment faire en sorte que mon terminal affiche des images graphiques?

Ceci est une rapide maquette que je copie et colle ensemble. J'imagine que c'est super cool et utile.

Est-ce que quelque chose comme ça existe déjà?

http://imgur.com/Z3DbS

134
Dennkster

Mise à jour 2018-12-31

Le chat émulateur de terminal génial a une commande icat pour afficher des images (ne fonctionne pas dans tmux). Kitty active également prévisualisations d’images dans ranger (un gestionnaire de fichiers de terminal), qui est la méthode que j’utilise le plus souvent (fonctionne dans tmux).


1. w3m

w3m a pour objectif principal de fournir une navigation Web dans la console, mais il peut également être utilisé pour afficher des images dans un terminal. Les packages appropriés à installer sont w3m et w3m-img (au moins sur Ubuntu). Vous devez ensuite désactiver la visionneuse d'images externe en passant -o ext_image_viewer=0 ou en allant dans le menu d'options ('o') à l'intérieur de w3m et désactiver la visualisation d'images externes.

Maintenant, en tapant w3m <image_name>, l'image sera affichée dans le terminal. w3m utilisera l'intégralité de la fenêtre du terminal. Vous ne pourrez donc pas voir vos commandes précédentes avant de quitter w3m (pensez à less et non à cat). Notez que si l'image est trop grande pour s'adapter à la fenêtre du terminal, elle sera toujours ouverte de l'extérieur (dans imagemagick pour moi). Notez également que même si je lis plusieurs endroits pour que les images en ligne w3m ne fonctionnent pas pour gnome-terminal, cela fonctionne correctement pour moi. Il est un peu gênant de devoir taper deux fois q pour fermer l’image puis w3m.

2. Terminologie

tycat fait partie de terminology et affiche des images telles que cat affiche des fichiers texte et ainsi de suite imgcat fonctionne pour iTerm2 sous OS X.

3. libsixel + mlterm/xterm

Installez libsixel-bin et tout terminal compatible (exemples mentionnés dans la section 'Configuration requise' de ce fichier lisezmoi , par exemple mlterm ou xterm compilé avec les indicateurs corrects et vous pourrez afficher les images à l'aide de la commande img2sixel. Ces deux packages sont disponibles dans le repositionnement Ubuntu.

4. FIM

Ensuite il y a FIM qui est une version améliorée de fbi. La page d'accueil indique qu'elle peut afficher des images non seulement avec le framebuffer, mais également avec X. Cependant, elle ne s'installe pas pour moi. Edit Je l’ai exécuté en téléchargeant la version tronc 0.5, en exécutant ./configure --disable-exif, puis en supprimant temporairement la version anaconda (distribution python) de mon chemin, car elle provoquait un conflit avec libpng avant d'exécuter make et Sudo checkinstall (vous devez écrire manuellement un numéro de version avec checkinstall, mais il est plus facile de supprimer que make install). Cependant, les images sont toujours affichées dans une fenêtre séparée, bien que, comme pour fbi, il ne soit pas nécessaire d’exécuter X, ce qui est plutôt cool.

5. jupyter-qtconsole

Vous pouvez également faire preuve de créativité et utiliser jupyter-qtconsole comme console système, le configurer pour afficher les tracés en ligne (%matplotlib inline), puis afficher l'image à l'aide de matplotlib =)

6. feh

feh utilise X pour afficher des images, mais feh -x les affiche dans une fenêtre sans bordure pouvant être rapidement fermée avec q ou x. Bien que les images ne soient pas affichées dans le terminal proprement dit, 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 ce que j’utilise jusqu’à ce que gnome-terminal obtienne un équivalent imgcat/tycat.

43
joelostblom

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

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

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

Par exemple, voici comment cette image s’affiche dans cacaview:

Screenshot

Je l’utilisais parfois pour le plaisir de regarder des vidéos au format ASCII dans mplayer :)

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

J'ai écrit un petit outil C++ permettant de convertir des images en codes de contrôle ANSI RGB et en caractères graphiques en blocs Unicode pour terminaux modernes prenant en charge 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

Usage:

tiv <image(s)>

Edit : liens/instructions modifiés vers le référentiel principal; utilisation ajoutée.

Exemples:

TerminalImageViewer

34
Stefan Haustein

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

Sudo apt-get install fbi

Accédez à une console Linux (en utilisant Ctrl+Alt+F1) et entrez fbi <filename>

Cela devrait montrer votre image.

30
Amith KK

J'ai créé une fonction Shell simple ligne très rapide et simple qui résout la question initiale exactement comme demandé dans les maquettes. Notez que les captures d'écran ci-dessous sont des images réelles et non 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 conditions préalables sont minimales: xterm et ImageMagick (apt-get install xterm imagemagick). Votre xterm doit être en mode vt340, que vous pouvez définir dans ~/.Xresources ou à partir de la ligne de commande (xterm -ti vt340).

Limitations: Seules 16 couleurs sont utilisées sur toutes images montrées. Cela signifie qu'une image peut sembler meilleure lorsqu'elle est vue seule. (Voir ci-dessous).

Screenshot showing 16 color limitation

UPDATE

Bien que ma réponse ci-dessus soit toujours correcte, j'ai créé un script Shell encore plus performant, capable de créer une "l" d'images directement dans un terminal. J'ai ajouté toutes sortes d'améliorations pour rendre les images plus belles (plus de couleurs, alpha correct, orientation JPEG, traitement de nombreuses images, disposition compacte des tuiles, ...). C'est encore un programme assez petit, mais j'ai pensé que les gens voudraient le personnaliser, je l'ai donc mis sur github: https://github.com/hackerb9/lsix .

29
hackerb9

Une autre alternative est la terminologie:

enter image description here https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Vous pouvez l'installer sur Ubuntu en ajoutant le référentiel Enlightenment-git :

Sudo add-apt-repository ppa:Enlightenment-git/ppa
Sudo apt-get update && Sudo apt-get install terminology

Ou, dans les versions récentes d'Ubuntu>> Vivid (15.04), il peut être récupéré à partir des référentiels officiels.

Sudo apt-get install terminology

Pour afficher une image, saisissez tycat IMAGENAME et pour afficher une liste d'images, saisissez tyls -m.

20
Javier López

Il y a en fait un tel projet nommé TermKit , si vous souhaitez le tester - consultez http://blog.easytech.com.ar/2011/05/21/playing- with-termkit-with-chrome / mais c'est assez inachevé (puisque vous semblez avoir un Mac, vous devriez essayer la version Mac car c'est "l'original")

Alors oui, c’est une idée qui mérite d’être explorée - le passage du mode graphique au texte seulement doit être rapide car je n’ai pas toujours besoin des images visionnées. En outre, il doit être parfaitement compatible avec, par exemple, Vim ..

12
sakjur

Cela n'existe pas; gnome-terminal est seulement capable d'afficher du texte, du moins autant que je sache.

Cependant, vous pouvez appeler une visionneuse d'images à partir de la ligne de commande pour afficher vos images dans un dossier particulier. Donc, pour sortir de votre maquette ci-dessus et vous montrer la liste de toutes les images .jpg du dossier actuel, vous pouvez utiliser Eye of GNOME (visionneuse d'images par défaut d'Ubuntu) à partir de la ligne de commande pour quelque chose de similaire:

eog *.jpg &

Notez que la fenêtre qui s’affiche n’affiche qu’une image à la fois, bien que vous puissiez utiliser les boutons fléchés fournis pour les parcourir.

8

J'ai écrit un outil pour le faire. J'ai nommé mine Show Image In Terminal (siit). Cela suppose que vous ayez un terminal 256 couleurs et un support UTF8, et que c'est écrit en Perl.

Je l'ai laissé tomber dans mon ~/bin. Cela suppose que vous avez Image :: Magick, Terme :: Size, Getopt :: Long et Time: HiRes, qui devraient tous être disponibles dans les dépôts de votre distribution, ou CPAN.

Mon intention était de rentrer chez moi et de visualiser rapidement les images sans lancer d'affichage sur X. Le script s'adapte à la largeur/hauteur appropriée pour le terminal où vous vous trouvez. J'ai utilisé les caractères UTF8 pour doubler efficacement la résolution verticale de votre terminal. aide à la clarté. YMMV.

exemples de photos ici

code source ici

6
Tom

En plus de réponse de Joel , Ranger le gestionnaire de fichiers avec l'extension w3mimgdisplay peut afficher les images en couleur et prend également en charge "oldschool ASCII art previews". Ici c'est comment vous pouvez l'activer. Ce n'est peut-être pas exactement ce que vous cherchiez, mais un moyen de prévisualiser des images dans un terminal.

enter image description here

5
afedersin

Un autre outil est catimg , bien qu’il n’existe pas de paquet prêt pour Ubuntu. En réalité, il ne visualise pas l'image mais la transforme en caractères colorés.

enter image description here

4
some user

Voici quelques solutions dans node.js (Instructions d'installation ici ).

  1. image-tube 

  2. imagerie

Pour installer l’un ou l’autre, tapez npm install -g <package_name>package_name correspond à picture-tube ou à imaging.

3
Nemo