Как мне заставить мой терминал отображать графические картинки?

146

Это быстрый макет, который я скопировал и вставил вместе. Я представляю, что это очень круто и полезно.

Что-то подобное уже существует?

http://imgur.com/Z3DbS

Dennkster
источник
5
Я всегда просто использую feh! Я знаю, что это не в терминале, но это делает свою работу.
Dylnmc
Терминал не для графики, он может отображать только символы Юникода и делать некоторые раскраски. Лучшее, что вы можете получить - это искусство ASCII.
Бен
Я люблю использовать терминал для графики с itermplot , который, к сожалению, только для macOS.
Мику
Этот вопрос мотивирован маленьким пивным имиджем в Homebrew? Это эмодзи.
Ekevoo
Если вы находитесь на сервере Ubuntu, пытаясь просмотреть их на Mac, это прекрасно работает: unix.stackexchange.com/a/457076/7000
Шридхар Сарнобат,

Ответы:

48

Обновление 2018-12-31

В универсальном терминальном эмуляторе терминала есть icatкоманда для отображения изображений (не работает в tmux). Китти также включает предварительный просмотр изображений в Ranger (файловый менеджер терминала), который я сейчас использую чаще всего (работает в tmux).


1. w3m

Хотя основная цель w3mзаключается в обеспечении просмотра веб-страниц в консоли, его также можно использовать для просмотра изображений в терминале. Соответствующие пакеты для установки есть w3mи w3m-img(по крайней мере в Ubuntu). Затем вам нужно отключить внешний просмотрщик изображений, пройдя -o ext_image_viewer=0или войдя в меню параметров ('o') внутри, w3mи отключить просмотр внешнего изображения.

Теперь, набрав текст w3m <image_name>будет отображаться в терминале. w3mбудет использовать все окно терминала, поэтому вы не сможете увидеть свои предыдущие команды, пока не выйдете w3m(подумайте less, нет cat). Обратите внимание, что если изображение слишком велико, чтобы соответствовать окну терминала, оно все равно будет открыто снаружи (в imagemagick для меня). Также обратите внимание, что хотя я читаю несколько мест, для которых w3mвстроенные изображения не будут работать gnome-terminal, для меня это работает нормально. Немного раздражает, что вам приходится печатать qдважды, чтобы сначала закрыть изображение, а затем w3m.

2. Терминология

tycatявляется частью terminologyи отображает изображения, такие как catтекстовые файлы и подобные imgcatработы для iTerm2 на OS X.

3. libsixel + mlterm / xterm

Установите libsixel-binи любой совместимый терминал (примеры, упомянутые в разделе «Требования» данного файла readme , например, mltermили xtermскомпилированный с правильными флагами, и вы можете просматривать изображения с помощью img2sixelкоманды. Оба этих пакета доступны в репозиториях Ubuntu.

4. FIM

Тогда есть FIM, который является улучшенной версией fbi. На домашней странице утверждается, что она может отображать изображения не только с помощью кадрового буфера, но и с X. Однако она не будет установлена ​​для меня. Редактирование Я запустил его, загрузив версию магистрали версии 0.5, запустив ./configure --disable-exifи затем временно удалив anaconda(дистрибутив python) из моего пути, поскольку это вызвало конфликт libpngперед запуском makeи sudo checkinstall(вам нужно записать номер версии вручную с помощью checkinstall, но это облегчает удалить чем make install). Тем не менее, изображения по-прежнему отображаются в отдельном окне, хотя, как и у fbiвас, не нужно запускать X, что довольно круто.

5. jupyter-qtconsole

Вы также можете проявить творческий подход и использовать jupyter-qtconsole в качестве системной консоли, настроить его так, чтобы он отображал графики inline ( %matplotlib inline), а затем отображать изображение с помощью matplotlib =)

6. фех

fehиспользует X для отображения изображений, но feh -xвыдает их в окне без полей, которое можно быстро закрыть с помощью qили x. Хотя изображения не отображаются в терминале, скажем так, я подумал, что стоит упомянуть, поскольку это наименее навязчивый способ, который я нашел до сих пор, и то, что я использую, пока не gnome-terminalполучит imgcat/ tycatэквивалент.

joelostblom
источник
w3m использует caca-utils, поэтому лучше использовать его напрямую (cacaview e.jpg)
user1133275
65

Может быть, кака это то, что вы хотите. Для изображений :

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

Убедитесь, что окно вашего терминала достаточно большое.

Например, вот как это изображение отображается в cacaview:

Скриншот

Я иногда использовал это для развлечения, чтобы посмотреть видео в формате ASCII в mplayer :) Вот так:

mplayer -vo caca /PATH/TO/video.mpg
user569825
источник
6
Очень полезно - команда от caca-utils, которая должна отображать встроенные изображения в терминале,img2txt
Wilf
7
Теперь на поле появился новый игрок: github.com/ichinaski/pxl --- В быстром тесте картинки выглядят лучше, чем в cacaview. (Я хотел добавить новый ответ, но сайт не позволил мне (?))
user569825
" смотреть видео как ASCII " Но ... почему?
Дерек 朕 會
4
"watch videos as ASCII" But... why? потому что ты хочешь? потому что вам нужно посмотреть видео, и единственное, что у вас есть, это терминал? Потому что если вам что-то не нужно, это не значит, что другие следуют за вами.
Марцин Орловский
1
mpvимеет вывод tct, который (при использовании с --quiet) отображает мультимедиа в терминале с сопоставимым качеством pxl.
dsstorefile1
38

Я написал небольшой инструмент C ++ для преобразования изображений в управляющие коды ANSI RGB и графические символы блока Unicode для современных терминалов, поддерживающих эти функции:  https://github.com/stefanhaustein/TerminalImageViewer

Монтаж:

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

Использование:

tiv <image(s)>

Изменить : Изменены ссылки / инструкции в основном хранилище; добавленное использование.

Примеры:

TerminalImageViewer

Стефан Хаустейн
источник
2
Это выглядит очень красиво! Но это Java или C ++?
Андреа
3
Раньше это была Java, но необходимость в JVM для этой простой задачи меня раздражала, поэтому я перенес ее на C ++ (хотя на снимках экрана все еще показана команда java)
Stefan Haustein,
4
Гораздо лучше, чем какавью!
Петр Дабковский,
1
Это удивительный инструмент. Определенно медленнее, но намного лучше, чем кака. Есть ли потеря качества при использовании «256-битного режима»? (поскольку я должен, нормальный режим испорчен)
phil294
2
Очень хорошие результаты! Спасибо ! Очень полезно с ssh, когда ни один x сервер недоступен!
Арно де Бройссия
33

Я сделал очень быструю, простую однострочную функцию оболочки, которая решает исходный вопрос в точности так, как было запрошено в макетах. Обратите внимание, что скриншоты ниже - это реальные изображения, а не макеты.

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

Снимок экрана с использованием команды lsix

Предварительные условия минимальны: xterm и ImageMagick ( apt-get install xterm imagemagick). Ваш xterm должен быть в режиме vt340, который вы можете установить в ~/.Xresourcesкомандной строке или из командной строки ( xterm -ti vt340).

Ограничения: Только 16 цветов используются на всех показанных изображениях. Это означает, что изображение может выглядеть лучше при просмотре самостоятельно. (Смотри ниже).

Снимок экрана, показывающий ограничение 16 цветов

ОБНОВИТЬ

Хотя мой приведенный выше ответ по-прежнему верен, я создал еще лучший сценарий оболочки, который может делать 'ls' изображений непосредственно в терминале. Для того чтобы изображения выглядели лучше, были добавлены всевозможные улучшения (больше цветов, правильная альфа, ориентация JPEG, обработка большого количества изображений, компактная разметка листов, ...). Это все еще довольно маленькая программа, но я подумал, что люди могут захотеть настроить ее, поэтому я разместил ее на github: https://github.com/hackerb9/lsix .

hackerb9
источник
30

Вы не можете сделать это в окне терминала, но вы можете сделать это в консоли Linux, используя fbi. Вам нужен фреймбуфер, чтобы это работало:

sudo apt-get install fbi

Перейдите в консоль Linux (используя Ctrl+ Alt+ F1) и введитеfbi <filename>

Это должно показать ваше изображение.

Амит КК
источник
5
Что вы подразумеваете под "терминал" против "TTY"? Разве они не одно и то же? askubuntu.com/questions/506510/…
Wernight
6
Не работал для меня Но инструмент "кака" работал. используя «DejaVu Sans Mono-16», размер пикселя = 16.67 file = / usr / share / fonts / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: неподходящий ioctl для устройства (не для консоли linux?)
Фелипе
3
@Wernight Ctrl + Alt + F1 / F2 / F3 дает вам tty под Ubuntu (Ctrl + Alt + F8, чтобы вернуться).
Joelostblom
1
Существует также FIM, которая является улучшенной версией fbi. На домашней странице утверждается, что она может отображать изображения не только с помощью кадрового буфера, но и с X. Однако она не будет установлена ​​для меня.
Joelostblom
1
Хорошие новости iTerm2 v3 может показывать встроенные изображения iterm2.com/images.html
AB
20

Другой альтернативой является терминология:

введите описание изображения здесь https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Вы можете установить его в Ubuntu, добавив репозиторий просветления-git :

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

Или в последних выпусках Ubuntu> = Vivid (15.04) его можно получить из официальных репозиториев.

sudo apt-get install terminology

Чтобы просмотреть изображение, введите tycat IMAGENAMEи просмотрите список изображений, введите tyls -m.

Хавьер Лопес
источник
5
tycatдля отображения встроенного изображения и tyls -mдля отображения миниатюр средних размеров в каталоге.
Joelostblom
sudo add-apt-repository ppa: hannes-janetzek / просветление-svn не работает
Gucho Ca
Я обновил ответ, чтобы указать на более свежую просветительскую работу
Хавьер Лопес
1
@chilicuil terminologyнаходится в официальных репозиториях Ubuntu , PPA не требуется.
кошка
@cat исходный ответ был написан до выпуска vivid, и в то время терминология была недоступна, у ppa просветителей все еще есть точные / надежные пакеты и более свежие версии терминологии. Однако, возможно, редактирование ответа поможет указать, что в последних выпусках Ubuntu доступны замороженные версии терминологии.
Хавьер Лопес
12

На самом деле есть такой проект под названием TermKit , если вы хотите его протестировать - посмотрите http://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/, но это довольно незавершенный (так как у вас, кажется, есть Mac, вы должны попробовать Mac-версию, так как она «оригинальная»)

Так что да, эту идею стоит изучить, однако переключение между графическим и текстовым режимами должно быть быстрым, поскольку мне не всегда нужны просматриваемые изображения. Кроме того - он должен быть полностью совместим, например, с Vim.

sakjur
источник
Я читал об этом проекте однажды на Slashdot . Звучит интригующе! Слишком плохо, что вам нужен Google Chrome, чтобы использовать его ... ну, ладно, не так уж плохо, если вы используете Chrome для начала, но это кажется ненужной зависимостью.
Кристофер Кайл Хортон
@ WarriorIng64 Да, я могу сработать, если вы немного взломаете Qt WebKit - но, к счастью, у нас есть chromium-browserрепозитории, так что довольно просто установить что-то Chrome-подобное - я на самом деле не пробовал TermKit на своем компьютере (с Chromium установлен, но использую Fx в качестве основного), поскольку я весьма зависим от Vim и не могу использовать терминал, который не даст мне мой любимый текстовый редактор;)
sakjur
8

Этого не существует; gnome-terminalспособен только на воспроизведение текста, по крайней мере, насколько я знаю.

Однако вы можете вызвать программу просмотра изображений из командной строки, чтобы увидеть ваши изображения в определенной папке. Итак, выйдя из макета выше и показывая список всех изображений .jpg в текущей папке, вы можете использовать Eye of GNOME (средство просмотра изображений по умолчанию в Ubuntu) из командной строки для чего-то похожего:

eog *.jpg &

Обратите внимание, что в открывшемся окне будет отображаться только одно изображение за раз, хотя вы можете использовать предоставленные кнопки со стрелками для переключения между ними.

Кристофер Кайл Хортон
источник
1
если работает с терминала, eog *.jpg & disownлучше, так как в противном случае EOG, скорее всего, выйдет, когда терминал закроется. NB Я бы хотел, чтобы EOG все еще оставался непревзойденным средством просмотра изображений в Ubuntu - Shotwell хорош, но пытается проиндексировать мои 30 ГБ + изображений .... и все равно медленно и раздражает
Уилф
Все предыдущие ответы доказывают этот пост неправильно.
Арно де Бройсия
7

Я написал инструмент для этого. Я назвал мой Показать изображение в терминале ( siit). Предполагается, что у вас есть терминал с 256 цветами и поддержка UTF8, и написано на Perl.

Я бросил это в мой ~/bin. Предполагается, что у вас есть Image :: Magick, Term :: Size, Getopt :: Long и Time: HiRes, которые должны быть доступны в репозиториях вашего дистрибутива, или CPAN.

Моим намерением было войти в мой дом по протоколу ssh и быстро просматривать изображения, не запуская дисплей над X. Сценарий масштабируется до соответствующей ширины / высоты для терминала, в котором вы находитесь. Я использовал символы UTF8 для эффективного удвоения вертикального разрешения вашего терминала, что на самом деле помогает ясности. YMMV.

Образцы снимков здесь

Исходный код здесь

Том
источник
1
Это "сиит", а не "дерьмо" (серьезно ....)
Star OS
Первоначально он назывался termpeg, но его было слишком сложно запомнить, и он не очень хорошо завершил. Кроме того, «этот код - часть кода» даже не имеет смысла.
Том
2
Ссылка на исходный код не работает для меня, но я нашел версию в интернете, вот зеркало: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
Ондржей Чертик
Есть ли шанс, что вы можете предоставить в комплекте версию? Я всегда сдаюсь, когда мне нужно установить библиотеки.
Шридхар Сарнобат
6

В дополнение к ответу Джоэла , файловый менеджер терминала Ranger с w3mimgdisplayрасширением может отображать изображения в полноцветном режиме, а также поддерживает «oldschool ASCII art previews». Вот как вы можете включить его. Это может быть не та вещь, которую вы искали, а способ предварительного просмотра изображений в терминале.

введите описание изображения здесь

afedersin
источник
4

Другой инструмент - catimg , хотя готового пакета для Ubuntu нет. На самом деле он не просматривает изображение, а превращает его в цветные символы.

введите описание изображения здесь

какой-то пользователь
источник