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

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

Существует ли что-то подобное уже?

http://imgur.com/Z3DbS

Обновление 2021-03-02

Viu

Viu это средство просмотра изображений, которое может отображать изображения с использованием подхода kitty, iterm или libsixel. Он также имеет резервный режим для отображения блочных изображений ascii.


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

котенок икат

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


1. w3m

В то время как основная цель w3m предназначен для обеспечения просмотра веб-страниц в консоли, его также можно использовать для просмотра изображений в терминале. Соответствующими пакетами для установки являются w3m и w3m-img (по крайней мере, в Ubuntu). Затем вам нужно отключить внешний просмотрщик изображений wither, передав -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. КОНЕЦ

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

5. jupyter-qtconsole

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

6. ФЭ

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

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

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

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

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

Screenshot

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

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

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

Установка:

git clone https://github.com/stefanhaustein/TerminalImageViewer.gitcd TerminalImageViewer/src/main/cppmakesudo make install

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

tiv <image(s)>

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

Примеры:

TerminalImageViewer

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

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

Screenshot of using the lsix command

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

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

Screenshot showing 16 color limitation

ОБНОВЛЕНИЕ

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

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

sudo apt-get install fbi

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

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

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

enter image description herehttps://www.youtube.com/watch ?функция=player_embedded&v=ibPziLRGvkg

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

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

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

sudo apt-get install terminology

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

Другим инструментом является катимг который может быть установлен с помощью

sudo apt-get install catimg

На самом деле он не просматривает изображение, а превращает его в цветные символы.

enter image description here

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

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

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

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

eog *.jpg &

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

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

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

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

Примеры снимков здесь

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

Я всегда просто использую фех! Я знаю, что этого нет в терминале, но он выполняет свою работу.

Мотивирован ли этот вопрос изображением маленького пива в Homebrew? Это эмодзи.

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

@Dennkster если вы найдете подходящий инструмент, упомяните его.

Если вы находитесь на сервере Ubuntu и пытаетесь просмотреть их на Mac, это прекрасно работает: display - Displaying an image in terminal over ssh - Unix & Linux Stack Exchange

Я люблю использовать терминал для графики с помощью itermplot, который, к сожалению, доступен только для macOS.