Jak sprawić, by mój terminal wyświetlał obrazy graficzne?


145

Jest to szybka makieta, którą skopiowałem i wkleiłem. Wyobrażam sobie, że to jest super fajne i przydatne.

Czy coś takiego już istnieje?

http://imgur.com/Z3DbS


5
Zawsze po prostu używam feh! Wiem, że nie ma go w terminalu, ale działa.
dylnmc,

Terminal nie jest przeznaczony do grafiki, może wyświetlać tylko znaki Unicode i robić trochę kolorowania. Najlepsze, co możesz dostać, to sztuka ASCII.
Ben

Uwielbiam używać terminala do grafiki z itermplot , który niestety jest tylko macOS.
miku

Czy to pytanie jest motywowane małym wizerunkiem piwa w Homebrew? To jest emoji.
Ekevoo,

Jeśli korzystasz z serwera Ubuntu i oglądasz je na komputerze Mac, działa to pięknie: unix.stackexchange.com/a/457076/7000
Sridhar Sarnobat

Odpowiedzi:


48

Aktualizacja 2018-12-31

Wszechstronny emulator terminalu Kitty ma icatpolecenie wyświetlania obrazów (nie działa w tmux). Kitty umożliwia także podgląd obrazów w ranger (menedżer plików terminala), co jest obecnie najczęściej używaną metodą (działa w ramach tmux).


1. w3m

Chociaż głównym celem w3mjest przeglądanie stron internetowych w konsoli, można go również używać do wyświetlania obrazów w terminalu. Odpowiednie pakiety do zainstalowania to w3mi w3m-img(przynajmniej na Ubuntu). Następnie należy wyłączyć usychającą zewnętrzną przeglądarkę obrazów, przechodząc -o ext_image_viewer=0lub przechodząc do menu opcji („o”) wewnątrz w3mi wyłączając przeglądanie zewnętrznego obrazu.

Teraz wpisanie w3m <image_name>spowoduje wyświetlenie obrazu w terminalu. w3mużyje całego okna terminala, więc nie możesz zobaczyć swoich poprzednich poleceń, dopóki nie wyjdziesz w3m(pomyśl less, nie cat). Zauważ, że jeśli obraz jest zbyt duży, aby zmieścił się w oknie terminala, nadal będzie otwarty na zewnątrz (jak dla mnie w imagemagick). Zauważ też, że chociaż czytam wiele miejsc, w których w3mobrazy wbudowane nie działałyby gnome-terminal, dla mnie działa dobrze. To trochę denerwujące, że musisz qdwukrotnie wpisać, aby najpierw zamknąć obraz, a potem w3m.

2. Terminologia

tycatjest częścią terminologyi wyświetla obrazy takie jak catwyświetla pliki tekstowe i podobne imgcatdziała dla iTerm2 na OS X.

3. libsixel + mlterm / xterm

Zainstaluj libsixel-bini dowolny kompatybilny terminal (przykłady wymienione w części „Wymagania” tego readme , na przykład mltermlub xtermskompilowane z odpowiednimi flagami i możesz przeglądać obrazy za pomocą img2sixelpolecenia. Oba te pakiety są dostępne w repozytoriach Ubuntu.

4. FIM

Następnie jest FIM, który jest ulepszoną wersją fbi. Strona główna stwierdza, że ​​może wyświetlać obrazy nie tylko za pomocą bufora ramki, ale także X. Jednak dla mnie nie zostanie zainstalowany. Edycja Uruchomiłem go, pobierając wersję trunk 0,5, uruchamiając, ./configure --disable-exifa następnie tymczasowo usuwając anaconda(dystrybucję Pythona) z mojej ścieżki, ponieważ spowodował konflikt z nim libpngprzed uruchomieniem makei sudo checkinstall(musisz ręcznie wpisać numer wersji checkinstall, ale to ułatwia do usunięcia niż make install). Jednak obrazy są nadal wyświetlane w osobnym oknie, chociaż podobnie jak w fbiprzypadku nie trzeba uruchamiać X, co jest dość fajne.

5. jupyter-qtconsole

Możesz także wykazać się kreatywnością i użyć jupyter-qtconsole jako konsoli systemowej, skonfigurować go tak, aby wyświetlał wykresy inline ( %matplotlib inline), a następnie wyświetlić obraz za pomocą matplotlib =)

6. feh

fehużywa X do wyświetlania obrazów, ale wyświetla feh -xje w oknie bez obramowania, które można szybko zamknąć za pomocą qlub x. Chociaż zdjęcia nie są wyświetlane w terminalu na powiedzenie, pomyślałem, że warto o tym wspomnieć, ponieważ jest to najmniej inwazyjny sposób, jaki do tej pory znalazłem i czego używam, dopóki nie gnome-terminalotrzymam imgcat/ tycatekwiwalentu.


w3m używa caca-utils, więc lepiej byłoby użyć go bezpośrednio (cacaview e.jpg)
user1133275,

65

Może kakao jest tym, czego chcesz. Dla obrazów :

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

Upewnij się, że okno terminala jest wystarczająco duże.

Na przykład oto, jak ten obraz jest wyświetlany w cacaview:

Zrzut ekranu

Czasami używałem go do zabawy do oglądania filmów jako ASCII w mplayerze :) Podoba mi się to:

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

6
Bardzo pomocne - polecenie z kakao-narzędzi, które powinno wyświetlać obrazy w terminalu w linii, toimg2txt
Wilf

7
Na boisku jest teraz nowy gracz: github.com/ichinaski/pxl --- W szybkim teście zdjęcia wyglądają lepiej niż w widoku kakaowym. (Chciałem dodać nową odpowiedź, ale strona nie pozwoliła mi (?))
user569825

oglądaj filmy jako ASCII ” Ale… dlaczego?
Derek 朕 會 功夫

4
"watch videos as ASCII" But... why? bo chcesz? ponieważ musisz zerknąć na wideo, a jedyne, co masz, to terminal? Ponieważ jeśli czegoś nie potrzebujesz, NIE oznacza to, że inni podążają za nim.
Marcin Orłowski,

1
mpvma wyjście tct, które (gdy jest używane z --quiet) wyświetla media w terminalu o porównywalnej jakości do pxl.
dsstorefile1

38

Napisałem małe narzędzie C ++ do konwersji obrazów na kody sterujące ANSI RGB i znaki graficzne bloków Unicode dla nowoczesnych terminali obsługujących te funkcje:  https://github.com/stefanhaustein/TerminalImageViewer

Instalacja:

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

Stosowanie:

tiv <image(s)>

Edycja : Zmieniono linki / instrukcje do głównego repozytorium; dodatkowe użycie.

Przykłady:

TerminalImageViewer


2
To wygląda bardzo ładnie! Ale czy to Java czy C ++?
Andrea Lazzarotto,

3
Kiedyś była to Java, ale potrzebowałem JVM do tego prostego zadania irytowało mnie, więc przeniosłem ją do C ++ (zrzuty ekranu wciąż pokazują polecenie java)
Stefan Haustein

4
O wiele lepszy niż cacaview!
Piotr Dąkowski

1
To niesamowite narzędzie. Zdecydowanie wolniej, ale znacznie lepiej niż kakao. Czy występuje utrata jakości podczas korzystania z „trybu 256-bitowego”? (ponieważ muszę, normalny tryb jest
zawalony

2
Bardzo dobre wyniki! Dzięki ! Bardzo przydatne z ssh, gdy żaden serwer x nie jest dostępny!
Arnaud De Broissia

33

Zrobiłem bardzo szybką, prostą funkcję powłoki w jednym wierszu, która rozwiązuje oryginalne pytanie dokładnie tak, jak zażądano w makietach. Uwaga: poniższe zrzuty ekranu to rzeczywiste obrazy, a nie makiety.

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

Zrzut ekranu przedstawiający użycie polecenia lsix

Wymagania wstępne są minimalne: xterm i ImageMagick ( apt-get install xterm imagemagick). Twój xterm musi być w trybie vt340, który możesz ustawić w ~/.Xresourceslinii poleceń lub z linii poleceń ( xterm -ti vt340).

Ograniczenia: Tylko 16 kolorów jest używanych na wszystkich wyświetlanych obrazach. Oznacza to, że obraz może wyglądać lepiej, gdy jest oglądany sam. (Patrz poniżej).

Zrzut ekranu przedstawiający ograniczenie 16 kolorów

AKTUALIZACJA

Chociaż moja powyższa odpowiedź jest nadal poprawna, stworzyłem jeszcze lepszy skrypt powłoki, który jest w stanie wykonać „ls” obrazów bezpośrednio do terminala. Jest wiele ulepszeń, które dodałem, aby obrazy wyglądały lepiej (więcej kolorów, odpowiednia alfa, orientacja JPEG, obsługa wielu obrazów, kompaktowy układ kafelków, ...). To wciąż dość mały program, ale pomyślałem, że ludzie mogą chcieć go dostosować, więc umieściłem go na github: https://github.com/hackerb9/lsix .


30

Nie możesz tego zrobić w oknie terminala, ale możesz to zrobić w konsoli Linux za pomocą fbi. Aby bufor działał, potrzebujesz bufora ramki:

sudo apt-get install fbi

Przejdź do konsoli Linux (używając Ctrl+ Alt+ F1) i naciśnij klawisz Enterfbi <filename>

Powinien pokazać twój obraz.


5
Co rozumiesz przez „terminal” kontra „tty”? Czy to nie to samo? askubuntu.com/questions/506510/…
Wernight,

6
Nie działało dla mnie. Ale narzędzie „caca” działało. przy użyciu „DejaVu Sans Mono-16”, pixelize = 16,67 plik = / usr / share / fonts / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: Niewłaściwy ioctl dla urządzenia (nie jest to konsola linux?)
Felipe

3
@Wernight Ctrl + Alt + F1 / F2 / F3 daje tty pod Ubuntu (Ctrl + Alt + F8, aby wrócić).
joelostblom

1
Istnieje również FIM, który jest ulepszoną wersją fbi. Strona główna stwierdza, że ​​może wyświetlać obrazy nie tylko za pomocą bufora ramki, ale także X. Jednak dla mnie nie zostanie zainstalowany.
joelostblom

1
Dobra wiadomość iTerm2 v3 może wyświetlać obrazy bezpośrednio na stronie iterm2.com/images.html
AB

20

Inną alternatywą jest terminologia:

wprowadź opis zdjęcia tutaj https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Możesz zainstalować go na Ubuntu, dodając repozytorium enlightenment-git :

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

Lub w najnowszych wydaniach Ubuntu> = Vivid (15.04) można go pobrać z oficjalnych repozytoriów.

sudo apt-get install terminology

Aby wyświetlić obraz, wpisz tycat IMAGENAMEi aby wyświetlić listę obrazów, wpisz tyls -m.


5
tycatwyświetlać obraz w linii i tyls -mwyświetlać miniatury w katalogu.
joelostblom

sudo add-apt-repository ppa: hannes-janetzek / enlightenment-svn doesnt Work
Gucho Ca

Zaktualizowałem odpowiedź, aby wskazać na nowszy ppa do oświecenia
Javier López,

1
@chilicuil terminologyznajduje się w oficjalnych repozytoriach Ubuntu , nie wymaga PPA.
kot

@cat oryginalna odpowiedź została napisana przed wydaniem vivid i w tym czasie terminologia nie była dostępna, ppa oświecenia wciąż ma precyzyjne / sprawdzone pakiety i bardziej aktualne wersje terminologii. Być może jednak edycja odpowiedzi w celu wskazania, że ​​zamrożone wersje terminologii są dostępne w najnowszych wydaniach ubuntu, będą pomocne.
Javier López

12

Tak naprawdę jest taki projekt o nazwie TermKit , jeśli chcesz go przetestować - sprawdź http://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/, ale jest dość niedokończony (ponieważ wydaje się, że masz komputer Mac, powinieneś wypróbować wersję Mac, ponieważ jest to „oryginał”)

Tak, to jednak pomysł, który warto zbadać - przełączanie między trybem graficznym a tekstowym musi być szybkie, ponieważ nie zawsze muszę oglądać obrazy. Ponadto - musi być w pełni kompatybilny np. Z Vimem ..


Przeczytałem o tym projekcie raz na Slashdot . Brzmi intrygująco! Szkoda, że ​​potrzebujesz Google Chrome, aby z niego korzystać ... no cóż, nie jest tak źle, jeśli używasz Chrome na początku, ale wydaje się to niepotrzebną zależnością.
Christopher Kyle Horton

@ WarriorIng64 Tak, może zadziałać, jeśli trochę zhakujesz za pomocą WebKit Qt - ale na szczęście mamy chromium-browserrepozytorium, więc dość łatwo jest zainstalować coś Chromelike - tak naprawdę nie próbowałem TermKit na moim komputerze (w / Chromium zainstalowany, ale używam Fx jako głównego), ponieważ jestem całkowicie zależny od Vima i tak naprawdę nie mogę użyć terminalu, który nie da mi mojego ukochanego edytora tekstów;)
sakjur

8

To nie istnieje; gnome-terminaljest w stanie wyświetlać tylko tekst, przynajmniej o ile mi wiadomo.

Możesz jednak wywołać przeglądarkę zdjęć z wiersza poleceń, aby zobaczyć zdjęcia w określonym folderze. Więc wychodząc z powyższej makiety pokazującej wyświetlanie wszystkich zdjęć .jpg w bieżącym folderze, możesz użyć Eye of GNOME (domyślna przeglądarka obrazów Ubuntu) z wiersza poleceń, aby uzyskać coś podobnego:

eog *.jpg &

Zauważ, że okno, które się pojawi, będzie wyświetlać tylko jeden obraz na raz, chociaż możesz użyć dostarczonych przycisków strzałek, aby przełączać między nimi.


1
jeśli działa z terminala, eog *.jpg & disownlepiej, ponieważ w przeciwnym razie EOG prawdopodobnie wyjdzie, gdy terminal zostanie zamknięty. Uwaga: Chciałbym, aby EOG nadal był wadliwą przeglądarką obrazów Ubuntu - shotwell jest dobry, ale próbuje zaindeksować moje ponad 30 GB zdjęć ... i jest powolny i irytujący
Wilf

Wszystkie poprzednie odpowiedzi potwierdzają, że ten post jest błędny.
Arnaud De Broissia

7

Napisałem narzędzie do tego. Nazwałem mój Pokaż obraz w terminalu ( siit). Zakłada, że ​​masz 256-kolorowy terminal i obsługę UTF8 i jest napisany w perlu.

Wrzuciłem to do siebie ~/bin. Zakłada się, że masz Image :: Magick, Term :: Size, Getopt :: Long and Time: HiRes, które powinny być dostępne w repozytoriach twojej dystrybucji lub CPAN.

Moim zamiarem było ssh do mojego domu i szybkie przeglądanie obrazów bez uruchamiania wyświetlania w X. Skrypt skaluje się do odpowiedniej szerokości / wysokości dla terminalu, w którym się znajdujesz. Użyłem znaków UTF8, aby skutecznie podwoić rozdzielczość pionową twojego terminala, co naprawdę poprawia przejrzystość. YMMV.

Przykładowe zdjęcia tutaj

Kod źródłowy tutaj


1
To „siit”, a nie „gówno” (poważnie ....)
Star OS

Pierwotnie nazywał się termpeg, ale jest to zbyt trudne do zapamiętania i nie wypełniało dobrze tabulatora. Poza tym „ten kod jest kawałkiem” nie ma nawet sensu.
Tom

2
Link do kodu źródłowego nie działa dla mnie, ale znalazłem wersję w Internecie, oto lustro: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
Ondřej Čertík

Czy jest jakaś szansa na dostarczenie wersji pakietowej? Zawsze poddaję się, gdy muszę instalować biblioteki.
Sridhar Sarnobat

6

Oprócz odpowiedzi Joela , menedżer plików terminala Ranger z w3mimgdisplayrozszerzeniem może wyświetlać obrazy w pełnym kolorze, a także obsługuje „oldschoolowe podglądy ASCII”. Oto jak możesz to włączyć. To może nie być dokładnie to, czego szukasz, ale sposób na podgląd obrazów w terminalu.

wprowadź opis zdjęcia tutaj


4

Kolejnym narzędziem jest catimg , chociaż nie ma gotowego pakietu dla Ubuntu. W rzeczywistości nie wyświetla obrazu, ale zamienia go w kolorowe postacie.

wprowadź opis zdjęcia tutaj


3

Oto niektóre rozwiązania w node.js(Instrukcje instalacji tutaj ).

  1. kineskop

  2. obrazowanie

Aby zainstalować albo, typ npm install -g <package_name>, gdzie package_namejest albo z picture-tubealbo imaging.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.