Wie bringe ich mein Terminal dazu, grafische Bilder anzuzeigen?

146

Dies ist ein kurzes Modell, das ich kopiere und zusammen füge. Ich stelle mir das super cool und nützlich vor.

Gibt es so etwas schon?

http://imgur.com/Z3DbS

Dennkster
quelle
5
Ich benutze immer nur feh! Ich weiß, dass es nicht im Terminal ist, aber es macht seinen Job.
dylnmc
Das Terminal ist nicht für Grafiken geeignet, es kann nur Unicode-Zeichen anzeigen und einige Farben anwenden. Das Beste, was Sie bekommen können, ist ASCII-Kunst.
Ben
Ich liebe es, das Terminal für Grafiken mit itermplot zu verwenden , was leider nur unter MacOS möglich ist.
Miku
Ist diese Frage durch das kleine Bierbild in Homebrew motiviert? Das ist ein Emoji.
Ekevoo
Wenn Sie sich auf einem Ubuntu-Server befinden und versuchen, sie auf einem Mac anzuzeigen
Sridhar Sarnobat

Antworten:

48

Update 2018-12-31

Das Allround-Terminal-Emulator-Kätzchen hat einen icatBefehl zum Anzeigen von Bildern (funktioniert nicht in tmux). Kitty ermöglicht auch die Vorschau von Bildern in Ranger (einem Terminal-Dateimanager). Diese Methode verwende ich derzeit am häufigsten (funktioniert in tmux).


1. w3m

Während der Hauptzweck darin w3mbesteht, das Surfen im Internet in der Konsole zu ermöglichen, kann er auch zum Anzeigen von Bildern im Terminal verwendet werden. Die relevanten zu installierenden Pakete sind w3mund w3m-img(zumindest unter Ubuntu). Sie müssen dann den externen Bildbetrachter deaktivieren, -o ext_image_viewer=0indem Sie das Optionsmenü ('o') aufrufen w3mund die externe Bildbetrachtung deaktivieren.

Wenn Sie jetzt tippen, w3m <image_name>wird das Bild im Terminal angezeigt. w3mwird das gesamte Terminalfenster verwenden, so dass Sie Ihre vorherigen Befehle erst nach dem Beenden sehen können w3m(denken Sie less, nicht cat). Wenn das Bild zu groß ist, um in das Terminalfenster zu passen, wird es dennoch extern geöffnet (in imagemagick für mich). Beachten Sie auch, dass ich zwar mehrere Stellen lese, für die w3mInline-Bilder nicht funktionieren gnome-terminal, aber für mich in Ordnung ist. Es ist etwas ärgerlich, dass Sie qzweimal tippen müssen , um zuerst das Bild und dann zu schließen w3m.

2. Terminologie

tycatist Teil von terminologyund zeigt Bilder an wie catzeigt Textdateien an und imgcatfunktioniert wie für iTerm2 unter OS X.

3. libsixel + mlterm / xterm

Installieren Sie libsixel-binein kompatibles Terminal (Beispiele , die in dieser Readme unter 'Anforderungen' aufgeführt sind , mltermoder xtermkompilieren Sie es mit den richtigen Flags, und Sie können mit dem img2sixelBefehl Bilder anzeigen . Beide Pakete sind in den Ubuntu-Repos verfügbar.

4. FIM

Dann gibt es FIM , eine verbesserte Version von fbi. Die Homepage gibt an, dass sie Bilder nicht nur mit dem Framebuffer, sondern auch mit X anzeigen kann. Für mich wird sie jedoch nicht installiert. Bearbeiten Ich habe es zum Laufen gebracht, indem ich die 0.5-Trunk-Version heruntergeladen, ausgeführt ./configure --disable-exifund dann vorübergehend anaconda(Python-Distribution) von meinem Pfad entfernt habe, da es einen Konflikt mit libpngvor der Ausführung verursacht hat makeund sudo checkinstall(Sie müssen eine Versionsnummer manuell mit eingeben checkinstall, aber es macht es einfacher zu entfernen als make install). Die Bilder werden jedoch weiterhin in einem separaten Fenster angezeigt, obwohl Sie wie bei fbiX nicht unbedingt X ausführen müssen, was ziemlich cool ist.

5. jupyter-qtconsole

Sie können auch kreativ werden und die jupyter-qtconsole als Ihre Systemkonsole verwenden, sie so konfigurieren, dass sie Plots inline ( %matplotlib inline) anzeigt und das Bild dann mit matplotlib =) anzeigt.

6. feh

fehverwendet X zum Anzeigen von Bildern, zeigt feh -xsie jedoch in einem randlosen Fenster an, das schnell mit qoder geschlossen werden kann x. Obwohl Bilder nicht per say im Terminal angezeigt werden, hielt ich es für erwähnenswert, da es der am wenigsten aufdringliche Weg ist, den ich bisher gefunden habe und was ich verwende, bis ich gnome-terminalein imgcat/ tycatäquivalent bekomme.

joelostblom
quelle
w3m verwendet caca-utils, daher ist es besser, es direkt zu verwenden (cacaview e.jpg)
user1133275
65

Vielleicht ist Caca das, was Sie wollen. Für Bilder :

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

Stellen Sie sicher, dass Ihr Terminalfenster groß genug ist.

Zum Beispiel ist hier, wie dieses Bild in angezeigt wird cacaview:

Bildschirmfoto

Ich habe es manchmal aus Spaß benutzt, um Videos als ASCII in mplayer anzusehen :)

mplayer -vo caca /PATH/TO/video.mpg
user569825
quelle
6
Sehr hilfreich - ein Befehl von caca-utils, der Bilder inline im Terminal anzeigen soll, istimg2txt
Wilf
7
Es gibt jetzt einen neuen Spieler auf dem Spielfeld: github.com/ichinaski/pxl --- In einem kurzen Test sehen die Bilder besser aus als in Cacaview. (Ich wollte eine neue Antwort hinzufügen, aber die Website ließ mich nicht (?))
user569825
" Videos als ASCII ansehen " Aber ... warum?
Derek 朕 朕 功夫
4
"watch videos as ASCII" But... why? weil du willst? weil Sie das Video sehen müssen und das einzige, was Sie haben, ist Terminal? Denn wenn Sie etwas nicht brauchen, heißt das NICHT, dass andere folgen.
Marcin Orlowski
1
mpvhat einen TCT-Ausgang, der (bei Verwendung mit --quiet) Medien im Terminal in vergleichbarer Qualität anzeigt wie pxl.
dsstorefile1
38

Ich habe ein kleines C ++ - Tool zum Konvertieren von Bildern in ANSI-RGB-Steuercodes und Unicode-Blockgrafikzeichen für moderne Terminals geschrieben, die diese Funktionen unterstützen:  https://github.com/stefanhaustein/TerminalImageViewer

Installation:

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

Verwendungszweck:

tiv <image(s)>

Bearbeiten : Geänderte Links / Anweisungen zum Haupt-Repository; hinzugefügte Nutzung.

Beispiele:

TerminalImageViewer

Stefan Haustein
quelle
2
Das sieht sehr schön aus! Aber ist es Java oder C ++?
Andrea Lazzarotto
3
Früher war es Java, aber die Notwendigkeit einer JVM für diese einfache Aufgabe ärgerte mich. Deshalb habe ich sie nach C ++ portiert (die Screenshots zeigen jedoch immer noch den Java-Befehl)
Stefan Haustein
4
Viel besser als Cacaview!
Piotr Dabkowski
1
Dies ist ein erstaunliches Werkzeug. Definitiv langsamer, aber viel besser als Caca. Gibt es Qualitätsverluste bei Verwendung des "256-Bit-Modus"? (Da ich muss, ist der normale Modus durcheinander)
phil294
2
Sehr gute Ergebnisse! Vielen Dank ! Sehr nützlich bei ssh, wenn kein x-Server verfügbar ist!
Arnaud De Broissia
33

Ich habe eine sehr schnelle, einfache einzeilige Shell-Funktion erstellt, die die ursprüngliche Frage genau so löst, wie es in den Mockups gefordert wurde. Beachten Sie, dass die folgenden Screenshots tatsächliche Bilder und keine Modelle sind.

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

Screenshot der Verwendung des Befehls lsix

Die Voraussetzungen sind minimal: xterm und ImageMagick ( apt-get install xterm imagemagick). Ihr xterm muss sich im vt340-Modus befinden, den Sie entweder in ~/.Xresourcesoder über die Befehlszeile ( xterm -ti vt340) einstellen können .

Einschränkungen: Für alle gezeigten Bilder werden nur 16 Farben verwendet . Das bedeutet, dass ein Bild für sich betrachtet möglicherweise besser aussieht. (Siehe unten).

Screenshot mit 16 Farbbeschränkungen

AKTUALISIEREN

Während meine obige Antwort immer noch richtig ist, habe ich ein noch besseres Shell-Skript erstellt, das in der Lage ist, Bilder direkt in ein Terminal zu übertragen. Es gibt eine Vielzahl von Verbesserungen, die ich hinzugefügt habe, um die Bilder besser aussehen zu lassen (mehr Farben, korrektes Alpha, JPEG-Ausrichtung, Umgang mit vielen Bildern, kompaktes Kachel-Layout, ...). Es ist immer noch ein ziemlich kleines Programm, aber ich dachte, die Leute möchten es vielleicht anpassen, also habe ich es auf github veröffentlicht: https://github.com/hackerb9/lsix .

hackerb9
quelle
30

In einem Terminalfenster ist dies nicht möglich, in einer Linux-Konsole jedoch mit fbi. Sie benötigen einen Framebuffer, damit dies funktioniert:

sudo apt-get install fbi

Gehen Sie zu einer Linux-Konsole (mit Ctrl+ Alt+ F1) und geben Sie einfbi <filename>

Es sollte Ihr Bild zeigen.

Amith KK
quelle
5
Was meinst du mit "terminal" vs "tty"? Sind sie nicht dasselbe? askubuntu.com/questions/506510/…
Wernight
6
Hat bei mir nicht funktioniert. Aber "Caca" Tool hat funktioniert. mit "DejaVu Sans Mono-16", Pixelgröße = 16,67 file = / usr / share / fonts / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: Ungeeignete ioctl für Gerät (kein Linux - Konsole?)
Felipe
3
@Wernight Ctrl + Alt + F1 / F2 / F3 gibt dir ein Tty unter Ubuntu (Ctrl + Alt + F8 um zurück zu kommen).
joelostblom
1
Es gibt auch FIM , eine verbesserte Version von fbi. Die Homepage gibt an, dass sie Bilder nicht nur mit dem Framebuffer, sondern auch mit X anzeigen kann. Für mich wird sie jedoch nicht installiert.
joelostblom
1
Gute Nachrichten: iTerm2 v3 kann Bilder inline anzeigen.
AB
20

Eine andere Alternative ist die Terminologie:

Bildbeschreibung hier eingeben https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Sie können es unter Ubuntu installieren, indem Sie das Repository enlightenment-git hinzufügen :

sudo add-apt-repository ppa:enlightenment-git/ppa
sudo apt-get update && sudo apt-get install terminology

In neueren Ubuntu-Versionen> = Vivid (15.04) kann es aus den offiziellen Repositories abgerufen werden.

sudo apt-get install terminology

Geben Sie zum Anzeigen eines Bildes tycat IMAGENAMEund zum Anzeigen einer Liste von Bildern Folgendes ein tyls -m.

Javier López
quelle
5
tycatum ein Bild inline tyls -manzuzeigen und mittelgroße Thumbnails in einem Verzeichnis anzuzeigen.
joelostblom
sudo add-apt-repository ppa: hannes-janetzek / aufklärung-svn funktioniert nicht
Gucho Ca
Ich habe die Antwort aktualisiert, um auf die neuere Aufklärung hinzuweisen
Javier López
1
@chilicuil terminologybefindet sich in den offiziellen Ubuntu-Repositories , es wird kein PPA benötigt.
Katze
@cat Die ursprüngliche Antwort wurde geschrieben, bevor Vivid veröffentlicht wurde. Zu diesem Zeitpunkt war die Terminologie noch nicht verfügbar. Die Enlightenment-PPA-Pakete sind immer noch präzise und vertrauenswürdig und enthalten aktuellere Terminologieversionen. Möglicherweise ist es jedoch hilfreich, die Antwort so zu bearbeiten, dass darauf hingewiesen wird, dass eingefrorene Terminologieversionen in neueren Ubuntu-Versionen verfügbar sind.
Javier López
12

Es gibt tatsächlich ein solches Projekt namens TermKit , wenn Sie es testen möchten - lesen Sie http://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/, aber es ist ziemlich unvollendet (da Sie einen Mac zu haben scheinen, sollten Sie die Mac-Version ausprobieren, da es "das Original" ist)

Also ja, es ist eine Idee, die es wert ist, erkundet zu werden - der Wechsel zwischen Grafik- und Nur-Text-Modus muss schnell gehen, da ich die angezeigten Bilder nicht immer benötige. Auch - es muss voll kompatibel sein mit zB Vim ..

Sakjur
quelle
Ich habe über dieses Projekt schon einmal auf Slashdot gelesen . Klingt faszinierend! Schade, dass Sie Google Chrome benötigen, um es zu verwenden ... Nun, okay, es ist nicht so schlimm, wenn Sie Chrome verwenden, aber es scheint eine unnötige Abhängigkeit zu sein.
Christopher Kyle Horton
@ WarriorIng64 Ja, es könnte funktionieren, wenn Sie ein bisschen mit Qt's WebKit hacken - aber zum Glück haben wir chromium-browserdie Repos, so dass es ziemlich einfach ist, etwas Chromartiges zu installieren - ich habe TermKit nicht wirklich auf meinem Computer (mit Chromium) ausprobiert installiert, aber mit Fx als main), da ich ziemlich abhängig von Vim bin und nicht wirklich ein Terminal verwenden kann, das mir nicht meinen geliebten Texteditor gibt;)
Sakjur
8

Das gibt es nicht; gnome-terminalkann nur Text anzeigen, zumindest soweit ich weiß.

Sie können jedoch einen Bildbetrachter über die Befehlszeile aufrufen, um Ihre Bilder in einem bestimmten Ordner anzuzeigen. Wenn Sie also von Ihrem obigen Modell ausgehen und alle .jpg-Bilder im aktuellen Ordner auflisten, können Sie Eye of GNOME (Ubuntus Standard-Bildbetrachter) über die Befehlszeile für etwas Ähnliches verwenden:

eog *.jpg &

Beachten Sie, dass das sich öffnende Fenster jeweils nur ein Bild anzeigt. Sie können jedoch die bereitgestellten Pfeiltasten verwenden, um zwischen den Bildern zu wechseln.

Christopher Kyle Horton
quelle
1
Wenn Sie von einem Terminal ausführen, eog *.jpg & disownist dies besser, da das EOG ansonsten wahrscheinlich beendet wird, wenn das Terminal geschlossen wird. NB Ich wünschte, EOG wäre immer noch Ubuntus Standard-Bildbetrachter - shotwell ist gut, versucht aber, meine über 30 GB großen Bilder zu indizieren .... und ist trotzdem langsam und nervig
Wilf
Alle vorherigen Antworten beweisen, dass dieser Beitrag falsch ist.
Arnaud De Broissia
7

Ich habe ein Tool dafür geschrieben. Ich habe mein Bild im Terminal anzeigen ( siit) genannt. Es wird davon ausgegangen, dass Sie ein 256-Farben-Terminal und UTF8-Unterstützung haben, und es ist in Perl geschrieben.

Ich ließ es in meinem fallen ~/bin. Es wird davon ausgegangen, dass Sie Image :: Magick, Term :: Size, Getopt :: Long und Time: HiRes haben, die alle in den Repositories Ihrer Distribution oder im CPAN verfügbar sein sollten.

Mein Ziel war es, in mein Haus zu gelangen und Bilder schnell anzuzeigen, ohne eine Anzeige über X zu starten. Das Skript passt sich an die Breite / Höhe des Terminals an, in dem Sie sich befinden. Ich habe UTF8-Zeichen verwendet, um die vertikale Auflösung Ihres Terminals effektiv zu verdoppeln, was wirklich der Fall ist hilft klarheit. YMMV.

Beispielaufnahmen hier

Quellcode hier

Tom
quelle
1
Es ist "siit", nicht "shit" (im Ernst ...)
Star OS
Ursprünglich hieß es Termpeg, aber das ist zu schwer zu merken und nicht gut zu vervollständigen. Außerdem macht "dieser Code ist ein Teil von siit" nicht einmal Sinn.
Tom
2
Der Quellcode-Link funktioniert bei mir nicht, aber ich habe eine Version im Internet gefunden. Hier ist ein Spiegel: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
Ondřej Čertík
Gibt es eine Möglichkeit, eine gebündelte Version bereitzustellen? Ich gebe immer auf, wenn ich Bibliotheken installieren muss.
Sridhar Sarnobat
6

Zusätzlich zu Joels Antwort kann der Ranger- Terminal-Dateimanager mit w3mimgdisplayErweiterung Bilder in Vollfarbe anzeigen und unterstützt auch "oldschool ASCII-Kunstvorschauen". So können Sie es aktivieren. Dies ist möglicherweise nicht genau das, wonach Sie gesucht haben, sondern eine Möglichkeit, eine Vorschau der Bilder im Terminal anzuzeigen.

Bildbeschreibung hier eingeben

Afedersin
quelle
4

Ein anderes Tool ist catimg , obwohl es kein fertiges Paket für Ubuntu gibt. Das Bild wird nicht angezeigt, sondern in farbige Zeichen umgewandelt.

Bildbeschreibung hier eingeben

ein Benutzer
quelle
3

Hier sind einige Lösungen in node.js(Installationsanweisungen hier ).

  1. Bildröhre

  2. Bildgebung

Geben Sie zum Installieren entweder npm install -g <package_name>where package_nameis of picture-tubeoder ein imaging.

Nemo
quelle