Bagaimana cara membuat terminal saya menampilkan gambar grafis?

146

Ini adalah maket cepat yang saya salin dan tempelkan bersama. Saya membayangkan ini menjadi sangat keren dan bermanfaat.

Apakah sesuatu seperti ini sudah ada?

http://imgur.com/Z3DbS

Dennkster
sumber
5
Saya selalu hanya menggunakan feh! Saya tahu itu tidak ada di terminal, tetapi itu memang berfungsi.
dylnmc
Terminal bukan untuk grafis, hanya dapat menampilkan karakter unicode, dan melakukan pewarnaan. Yang terbaik yang bisa Anda dapatkan adalah seni ASCII.
Ben
Saya suka menggunakan terminal untuk grafis dengan itermplot , yang sayangnya hanya macOS.
miku
Apakah pertanyaan ini dimotivasi oleh citra bir kecil di Homebrew? Itu emoji.
Ekevoo
Jika Anda berada di server Ubuntu yang mencoba melihatnya di Mac, ini berfungsi dengan baik: unix.stackexchange.com/a/457076/7000
Sridhar Sarnobat

Jawaban:

48

Perbarui 2018-12-31

Semua yang ada di sekitar emulator terminal hebat memiliki icatperintah untuk menampilkan gambar (tidak berfungsi dalam tmux). Kitty juga memungkinkan pratinjau gambar di dalam ranger (manajer file terminal), yang merupakan metode yang paling sering saya gunakan saat ini (berfungsi dalam tmux).


1. w3m

Meskipun tujuan utamanya w3madalah untuk menyediakan penelusuran web dalam-konsol, itu juga dapat digunakan untuk melihat gambar di terminal. Paket-paket yang relevan untuk diinstal adalah w3mdan w3m-img(setidaknya di Ubuntu). Anda kemudian perlu menonaktifkan tampilan gambar eksternal layu dengan melewati -o ext_image_viewer=0atau dengan masuk ke menu opsi ('o') di dalam w3mdan menonaktifkan tampilan gambar eksternal.

Sekarang, mengetik w3m <image_name>akan menampilkan gambar di terminal. w3makan menggunakan seluruh jendela terminal, sehingga Anda tidak dapat melihat perintah Anda sebelumnya sampai berhenti w3m(pikirkan less, tidak cat). Perhatikan bahwa jika gambar terlalu besar agar sesuai dengan jendela terminal, gambar itu akan tetap dibuka secara eksternal (in imagemagick for me). Perhatikan juga bahwa meskipun saya membaca banyak tempat yang w3mtidak bisa menghasilkan gambar sebaris gnome-terminal, itu berfungsi dengan baik untuk saya. Agak menyebalkan bahwa Anda harus mengetik qdua kali untuk menutup gambar terlebih dahulu dan kemudian w3m.

2. Terminologi

tycatadalah bagian dari terminologydan menampilkan gambar seperti catmenampilkan file teks dan suka imgcatbekerja untuk iTerm2 pada OS X.

3. libsixel + mlterm / xterm

Instal libsixel-bindan terminal apa pun yang kompatibel (contoh yang disebutkan di bawah 'Persyaratan' dari readme ini , misalnya mltermatau xtermdikompilasi dengan flag kanan dan Anda dapat melihat gambar dengan img2sixelperintah. Kedua paket ini tersedia di repo Ubuntu.

4. FIM

Lalu ada FIM yang merupakan versi perbaikan fbi. Situs web menyatakan bahwa ia dapat menampilkan gambar tidak hanya dengan framebuffer, tetapi juga dengan X. Namun, itu tidak akan menginstal untuk saya. Sunting Saya menjalankannya dengan mengunduh versi trunk 0,5, menjalankan ./configure --disable-exifdan kemudian menghapus sementara anaconda(distribusi python) dari jalur saya karena menyebabkan konflik dengan libpngsebelum menjalankan makedan sudo checkinstall(Anda perlu menulis dalam nomor versi secara manual dengan checkinstall, tetapi membuatnya lebih mudah untuk menghapus daripada make install). Namun, gambar masih ditampilkan dalam jendela terpisah, meskipun seperti dengan fbiAnda tidak perlu menjalankan X yang agak keren.

5. jupyter-qtconsole

Anda juga bisa berkreasi dan menggunakan jupyter-qtconsole sebagai konsol sistem Anda, konfigurasikan untuk menampilkan plot inline ( %matplotlib inline) dan kemudian tampilkan gambar menggunakan matplotlib =)

6. feh

fehmenggunakan X untuk menampilkan gambar, tetapi feh -xmuncul di jendela tanpa batas yang dapat dengan cepat ditutup dengan qatau x. Meskipun gambar tidak ditampilkan di terminal per katakan, saya pikir itu layak disebutkan karena itu adalah cara paling tidak mengganggu yang saya temukan sejauh ini dan apa yang saya gunakan sampai gnome-terminalmendapat imgcat/ tycatsetara.

joelostblom
sumber
w3m menggunakan caca-utils jadi akan lebih baik untuk hanya menggunakannya secara langsung (cacaview e.jpg)
user1133275
65

Mungkin caca adalah yang Anda inginkan. Untuk gambar :

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

Pastikan jendela terminal Anda cukup besar.

Misalnya, berikut adalah bagaimana gambar ini ditampilkan di cacaview:

Tangkapan layar

Saya terkadang menggunakannya untuk bersenang-senang menonton video sebagai ASCII di mplayer :) Seperti ini:

mplayer -vo caca /PATH/TO/video.mpg
pengguna569825
sumber
6
Sangat membantu - perintah dari caca-utils yang seharusnya menampilkan gambar inline di terminal adalahimg2txt
Wilf
7
Ada pemain baru di lapangan sekarang: github.com/ichinaski/pxl --- Dalam tes cepat gambar terlihat lebih baik daripada di cacaview. (Saya ingin menambahkan jawaban baru, tetapi situs tidak membiarkan saya (?))
user569825
" Tonton video sebagai ASCII " Tapi ... kenapa?
Derek 朕 會 功夫
4
"watch videos as ASCII" But... why? karena kamu mau? karena Anda perlu mengintip video dan satu-satunya yang Anda dapatkan adalah terminal? Karena jika Anda tidak membutuhkan sesuatu, itu TIDAK berarti orang lain mengikuti.
Marcin Orlowski
1
mpvmemiliki keluaran tct yang (bila digunakan dengan --quiet) menampilkan media di terminal dengan kualitas yang sebanding pxl.
dsstorefile1
38

Saya telah menulis alat C ++ kecil untuk mengonversi gambar ke kode kontrol ANSI RGB dan karakter grafik blok Unicode untuk terminal modern yang mendukung fitur-fitur ini:  https://github.com/stefanhaustein/TerminalImageViewer

Instalasi:

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

Pemakaian:

tiv <image(s)>

Edit : Tautan / instruksi yang diubah ke gudang utama; menambahkan penggunaan.

Contoh:

TerminalImageViewer

Stefan Haustein
sumber
2
Ini terlihat sangat bagus! Tetapi apakah itu Java atau C ++?
Andrea Lazzarotto
3
Dulu Java tetapi kebutuhan untuk JVM untuk tugas sederhana ini membuat saya kesal, jadi saya telah porting ke C ++ (tangkapan layar masih menunjukkan perintah java)
Stefan Haustein
4
Jauh lebih baik daripada cacaview!
Piotr Dabkowski
1
Ini adalah alat yang luar biasa. Jelas lebih lambat, tetapi jauh lebih baik daripada caca. Apakah ada kehilangan kualitas saat menggunakan "mode 256 bit"? (Karena saya harus, mode normal kacau)
phil294
2
Hasil yang sangat bagus Terima kasih! Sangat berguna dengan ssh ketika tidak ada server x tersedia!
Arnaud De Broissia
33

Saya membuat fungsi shell satu baris yang sangat cepat dan sederhana yang memecahkan pertanyaan awal persis seperti yang diminta dalam maket. Perhatikan screenshot di bawah ini adalah gambar sebenarnya, bukan maket.

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

Cuplikan layar menggunakan perintah lsix

Prasyarat minimal: xterm dan ImageMagick ( apt-get install xterm imagemagick). Xterm Anda harus dalam mode vt340, yang bisa Anda atur di ~/.Xresourcesatau dari baris perintah ( xterm -ti vt340).

Keterbatasan: Hanya 16 warna yang digunakan untuk semua gambar yang ditampilkan. Itu artinya, sebuah gambar mungkin terlihat lebih baik jika dilihat sendiri. (Lihat di bawah).

Tangkapan layar menampilkan 16 batasan warna

MEMPERBARUI

Walaupun jawaban saya di atas masih benar, saya telah membuat skrip shell yang lebih baik yang dapat melakukan 'ls' gambar langsung ke terminal. Ada segala macam perbaikan yang saya tambahkan untuk membuat gambar terlihat lebih baik (lebih banyak warna, alfa yang tepat, orientasi JPEG, menangani banyak gambar, tata letak ubin yang ringkas, ...). Ini masih merupakan program yang cukup kecil, tetapi saya pikir orang mungkin ingin menyesuaikannya, jadi saya telah memasangnya di github: https://github.com/hackerb9/lsix .

hackerb9
sumber
30

Anda tidak dapat melakukannya di jendela terminal, tetapi Anda bisa melakukannya di konsol Linux menggunakan fbi. Anda memerlukan framebuffer agar ini berfungsi:

sudo apt-get install fbi

Pergi ke konsol Linux (menggunakan Ctrl+ Alt+ F1) dan masukfbi <filename>

Itu harus menunjukkan gambar Anda.

Amith KK
sumber
5
Apa yang Anda maksud dengan "terminal" vs "tty"? Bukankah mereka hal yang sama? askubuntu.com/questions/506510/…
Wernight
6
Tidak bekerja untuk saya. Tetapi alat "caca" bekerja. menggunakan "DejaVu Sans Mono-16", pixelsize = 16,67 file = / usr / share / font / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: ioctl yang tidak sesuai untuk perangkat (bukan konsol linux?)
Felipe
3
@Wightight Ctrl + Alt + F1 / F2 / F3 memberi Anda tty di bawah ubuntu (Ctrl + Alt + F8 untuk kembali).
joelostblom
1
Ada juga FIM yang merupakan versi perbaikan fbi. Situs web menyatakan bahwa ia dapat menampilkan gambar tidak hanya dengan framebuffer, tetapi juga dengan X. Namun, itu tidak akan menginstal untuk saya.
joelostblom
1
Berita baik iTerm2 v3 dapat menampilkan gambar inline, periksa iterm2.com/images.html
AB
20

Alternatif lain adalah terminologi:

masukkan deskripsi gambar di sini https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Anda dapat menginstalnya di Ubuntu dengan menambahkan repositori enlightenment-git :

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

Atau dalam rilis Ubuntu terbaru> = Vivid (15,04) itu dapat diambil dari repositori resmi.

sudo apt-get install terminology

Untuk melihat gambar, ketik tycat IMAGENAME, dan untuk melihat daftar gambar, ketikkan tyls -m.

Javier López
sumber
5
tycatuntuk menampilkan gambar sebaris dan tyls -muntuk menampilkan thumbnail berukuran sedang dalam direktori.
joelostblom
sudo add-apt-repository ppa: hannes-janetzek / enlightenment-svn doesnt Work
Gucho Ca
Saya telah memperbarui jawaban untuk menunjukkan ppa pencerahan yang lebih baru
Javier López
1
@chilicuil terminologyada di dalam repositori resmi Ubuntu , tidak diperlukan PPA.
kucing
@cat jawaban asli ditulis sebelum vivid dirilis dan pada saat itu terminologi tidak tersedia, ppa pencerahan masih memiliki paket yang tepat / tepercaya dan versi terminologi yang lebih terkini. Namun, mungkin mengedit jawaban untuk menunjukkan daripada versi terminologi beku tersedia di rilis ubuntu terbaru akan sangat membantu.
Javier López
12

Sebenarnya ada proyek semacam itu yang bernama TermKit , jika Anda ingin mengujinya - lihat http://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/ tapi cukup belum selesai (karena Anda tampaknya memiliki Mac, Anda harus mencoba versi Mac karena "asli")

Jadi ya, itu ide yang patut ditelusuri, namun - peralihan antara mode grafis dan teks saja harus cepat karena saya tidak selalu membutuhkan gambar yang dilihat. Juga - itu harus sepenuhnya kompatibel dengan misalnya Vim ..

sakjur
sumber
Saya pernah membaca tentang proyek ini sebelumnya di Slashdot . Kedengarannya menarik! Sayang sekali Anda membutuhkan Google Chrome untuk menggunakannya ... well, oke, tidak terlalu buruk jika Anda menggunakan Chrome untuk memulai, tetapi sepertinya ketergantungan yang tidak perlu.
Christopher Kyle Horton
@ WarriorIng64 Ya, saya bisa bekerja jika Anda sedikit meretas dengan Qt's WebKit - tetapi untungnya kami memiliki chromium-browserdalam repo, sehingga cukup mudah untuk menginstal sesuatu Chromelike - Saya belum benar-benar mencoba TermKit di komputer saya (w / Chromium terinstal, tetapi menggunakan Fx sebagai utama) karena saya cukup bergantung pada Vim, dan tidak dapat benar-benar menggunakan terminal yang tidak akan memberi saya editor teks tercinta saya;)
sakjur
8

Ini tidak ada; gnome-terminalhanya mampu memutar teks, setidaknya sejauh yang saya tahu.

Namun, Anda dapat memanggil penampil gambar dari commandline untuk melihat gambar Anda di folder tertentu. Jadi, keluar dari mockup Anda di atas yang memperlihatkan daftar semua gambar .jpg di folder saat ini, Anda dapat menggunakan Eye of GNOME (penampil gambar default Ubuntu) dari commandline untuk sesuatu yang serupa:

eog *.jpg &

Perhatikan bahwa jendela yang muncul hanya akan menampilkan satu gambar pada satu waktu, meskipun Anda dapat menggunakan tombol panah yang disediakan untuk memutarnya.

Christopher Kyle Horton
sumber
1
jika berjalan dari terminal, eog *.jpg & disownlebih baik karena EOG kemungkinan akan keluar ketika terminal ditutup. NB Saya berharap EOG masih penampil gambar defualt Ubuntu - shotwell baik, tetapi mencoba untuk mengindeks 30GB + gambar saya .... dan tetap lambat dan menjengkelkan
Wilf
Semua jawaban sebelumnya membuktikan posting ini salah.
Arnaud De Broissia
7

Saya menulis alat untuk melakukan ini. Saya menamai milik saya Show Image In Terminal ( siit). Ini mengasumsikan Anda memiliki terminal 256 warna dan dukungan UTF8, dan itu ditulis dalam perl.

Saya menjatuhkannya di ~/bin. Itu mengasumsikan Anda memiliki Image :: Magick, Term :: Size, Getopt :: Long and Time: HiRes, yang semuanya harus tersedia di repositori distro Anda, atau CPAN.

Maksud saya adalah untuk ssh ke rumah saya, dan dengan cepat melihat gambar tanpa meluncurkan tampilan lebih dari X. Skrip skala untuk lebar / tinggi yang sesuai untuk terminal Anda. Saya menggunakan karakter UTF8 untuk secara efektif menggandakan resolusi vertikal terminal Anda, yang benar-benar membantu kejelasan. YMMV.

Contoh tembakan di sini

Kode sumber di sini

Tom
sumber
1
Ini "siit", bukan "sial" (serius ....)
Star OS
Awalnya disebut termpeg, tapi itu terlalu sulit untuk diingat dan tidak dilengkapi dengan baik. Selain itu, "kode ini adalah bagian dari siit" bahkan tidak masuk akal.
Tom
2
Tautan kode sumber tidak berfungsi untuk saya, tetapi saya menemukan versi di internet, di sini adalah mirror: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
Ondřej Čertík
Apakah ada peluang Anda bisa menyediakan versi paket? Saya selalu menyerah ketika saya harus menginstal perpustakaan.
Sridhar Sarnobat
6

Selain jawaban Joel , manajer file terminal Ranger dengan w3mimgdisplayekstensi dapat menampilkan gambar dalam warna penuh dan juga mendukung "pratinjau seni ASCII oldschool". Inilah cara Anda mengaktifkannya. Ini mungkin bukan hal yang tepat yang Anda cari tetapi cara untuk melihat pratinjau gambar di terminal.

masukkan deskripsi gambar di sini

afedersin
sumber
4

Alat lain adalah catimg , meskipun tidak ada paket siap untuk Ubuntu. Ini sebenarnya tidak melihat gambar tetapi mengubahnya menjadi karakter berwarna.

masukkan deskripsi gambar di sini

beberapa pengguna
sumber
3

Berikut adalah beberapa solusi dalam node.js(Instruksi instalasi di sini ).

  1. tabung gambar

  2. pencitraan

Untuk menginstal, ketik di npm install -g <package_name>mana package_namesalah satu picture-tubeatau imaging.

Nemo
sumber