Вопрос или проблема
Терминал — это очень быстрый и удобный способ быстрого доступа к каталогам и файлам (быстрее, чем искать и нажимать на каталог).
Одно, что он не может показывать в текстовом режиме, это “картины”.
Какой лучший способ просматривать картинки (как вы видите эскизы изображений в Nautilus), когда вы работаете в терминале (например, команда nautilus
или любая другая программа — но должна быть быстрой и удобной)?
Способ “двойного щелчка” по файлу из командной строки — это xdg-open
.
Если вы на Gnome (вероятно, если вы используете Nautilus), вы можете использовать eog
напрямую или любую другую программу для изображений (feh
довольно хороша).
feh <имя-изображения>
Если вы хотите легко обратиться к файлу имя-изображения
.
Если вы установили imagemagick, вы можете использовать его очень удобный инструмент командной строки display.
display path/to/picture.png
Я обычно запускаю python -m http.server 8080
(в python2: python -m SimpleHTTPServer 8080
) из папки, содержащей изображение, и просматриваю его из браузера по адресу localhost:8080/path/to/image.jpg. Это отлично подходит для просмотра различных изображений и текстовых файлов в той же директории.
Правка: этот метод также работает для удалённых машин. Просто запустите сервер python, как указано выше, и если порты открыты, вы сможете подключиться к myserver.com:8080/path/to/image.jpg. Если сервер не открывает порты, вы можете настроить ssh-туннель с помощью ssh [email protected] -N -L localhost:8080:localhost:8080
и затем просматривать изображения через ваш локальный браузер по адресу localhost:8080/path/to/image.jpg. Обратите внимание, что этот http интерфейс значительно быстрее чем ssh -X.
Я создал инструмент, который использует различные символы блок-графики Unicode для повышения разрешения (по сравнению с каноническим подходом 2 пикселя на символ, используемым другими решениями, размещёнными здесь). Он также автоматически отображает изображения в режиме эскиза, если несколько изображений предоставлены на вход.
Установка:
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install
Использование:
tiv <изображение(я)>
Больше деталей о проекте на github: https://github.com/stefanhaustein/TerminalImageViewer
Пример скриншота:
Без зависимостей, один C-файл, один заголовочный файл: imcat
Работает на Linux, macOS, Windows.
Автоматически масштабируется по ширине терминала с уменьшением качества.
Думаю, feh — это то, что вам нужно.
Хотя появление окна, похожего на терминал, для отображения изображений, как делает mplayer для воспроизведения видео, Feh всё равно считается основанным на терминале просмотрщиком изображений из-за своего ориентированного на команды стиля управления.
Если вы находитесь в чистом терминале с активированной framebuffer, я бы порекомендовал fbi. Это всегда в моем списке для выполнения после установки.
В противном случае eog — это стандартное приложение для открытия изображений в Gnome, как упомянул Кевин. Также Shotwell кажется открывается довольно быстро для меня… Я уверен, что их сотни. 🙂
Если вы находитесь на OS X, iTerm 2 поддерживает отображение встроенных изображений:
Как вы можете себе представить, это может быть очень полезно, когда вы просто хотите отобразить изображение, не заходя и не открывая Preview.app или не открывая Finder к изображению и не нажимая пробел на изображении.
Эта функция задокументирована на странице функций iTerm2
Удивлён, что эмулятор терминала Terminology не среди ответов. Так же легко, как tyls
и затем кликнув на изображение:
или что-то вроде tycat image.png
, например:
Плюс многое другое. Старое видео, почти 3 года назад, демонстрирующее Terminology 0.3: https://www.youtube.com/watch?v=ibPziLRGvkg#action=share.
Терминал kitty может отображать изображения внутри терминала с помощью “kitten” icat
Например.
kitty +kitten icat /path/to/image
Пример:
Документация kitty предлагает создать псевдоним, например.
alias icat="kitty +kitten icat"
Чтобы вы могли просто сделать:
icat /path/to/image
Библиотека imgdisplay в w3m может отображать изображения напрямую. Она работает только на некоторых эмуляторах терминала, таких как Xterm и URxvt.
ranger — это файловый браузер, который использует библиотеку для отображения превью. Добавьте это в конфигурационный файл ranger, чтобы включить функцию:
set preview_images true
Из терминала? Почему бы не в терминале: cacaview
может быть самым быстрым. По умолчанию это быстрее, если у терминала нет графики.
В Debian: sudo apt-get install caca-utils
На самом деле, существует способ показать файл PNG в терминале в текстовом режиме, используя picture-tube:
Вы можете ознакомиться с проектом на GitHub.
Изображение, конечно же, является приближением к фактическому изображению, учитывая, что самый маленький пиксель — это символ. Попробуйте взглянуть на результат в текстовом редакторе, и вы увидите огромное количество цветовых кодов.
Вы можете установить инструмент так (предполагая, что вы уже установили node/npm):
npm install -g picture-tube
Здесь есть инструмент под названием catimg
, который работает очень хорошо:
https://github.com/posva/catimg
Также имеются deb-пакеты на https://launchpad.net/ubuntu/+source/catimg
Ещё один отличный просмотрщик изображений на терминале — это fim, который является улучшенной версией fbi с управлением в стиле vim.
В Linux вы можете установить gnome-open.
# В дистрибутивах Debian
sudo apt-get install gnome-open
Затем создайте псевдоним:
alias open='gnome-open'
Теперь вы можете:
open file.pdf
open file.jpg
и т.д.
Это вопрос, которому четыре года, но я выяснила, что люди по-прежнему на него смотрят. Сегодня я хотел бы ответить на свой собственный вопрос, конкретно только для iTerm2
.
В первый раз, когда я задавала этот вопрос, под “самым быстрым” я подразумевала просмотр изображения так же быстро, как команда cat
отображает текст. Поэтому сегодня я нашла ответ на iTerm2
, которые это две удобные команды imgcat
и imgls
.
Чтобы использовать их, сначала установим iterm2-nigthly
:
$ brew cask install iterm2-nightly
Затем зайдите на сайт:
https://github.com/olivere/iterm2-imagetools
и установите команды imgcat
и imgls
:
$ go install github.com/olivere/iterm2-imagetools/cmd/imgcat
$ go install github.com/olivere/iterm2-imagetools/cmd/imgls
Так что мне они очень нравятся и надеюсь, что это будет полезно для вас всех!
Вы также можете использовать chafa (на GitHub). У него есть галерея с множеством примеров, показывающая различные опции. Он даже поддерживает анимацию GIF.
pxl — это довольно крутой вариант, который ещё не был упомянут. Похож на picture-tube, о котором говорилось раньше, хотя он поддерживает больше форматов изображений.
Я просто использую веб-браузер Chrome, который поддерживает jpg
, svg
, png
, ico
, анимированные gif
… в основном всё, что мне может понадобиться:
google-chrome ./myphoto.jpg
Если вы предпочитаете Firefox:
firefox ./myphoto.jpg
Быстро, удобно и легко в использовании.
Чтобы использовать:
$ img2sixel <имя_изображения>
Чтобы установить (ubuntu 18.04):
$ sudo apt install libsixel-bin
Пример (масштабирован до 400 пикселей в ширину с -w 400):
Существует список требований к терминалам в ссылке, но это работало на каждом терминале, на котором я это пробовал. Я не буду перечислять все поддерживаемые терминалы, но вот некоторые:
DEC VT серия, VT240/VT241/VT330/VT340/VT282/VT284/VT286/VT382
DECterm(dxterm)
Kermit
ZSTEM 340
WRQ Reflection
RLogin
mlterm
Работает на каждом из X, WIN32 GDI, framebuffer, Android, версия Cocoa.
XTerm (собран с опцией –enable-sixel-graphics)
yaft
Mintty (>= 2.6.0)
Если у вас есть любая относительно новая версия ImageMagick, вы можете выводить изображения в любой эмулятор терминала, который поддерживает формат SIXEL. Это отличается от команды ImageMagick display
, так как последняя требует сессии X11 и открывает отдельное окно, в то время как первая работает с любым поддерживаемым терминалом, даже через SSH. Следующая команда берет входное изображение, конвертирует его в изображение SIXEL и выводит в stdout, чтобы эмулятор терминала мог его отобразить:
convert input.png six:-
Пример изображения: Энди Рего и Крисси Маккларен, CC BY 2.0, через Wikimedia Commons
Я только что нашел эту страницу, и она все еще очень актуальна. OP не уточнил, хочет ли он X или fb просмотрщик.
Я использую небольшую утилиту под названием pho: http://www.shallowsky.com/software/pho/
Требует X, поэтому вызывайте из командной строки в окне терминала. Просматривает многие форматы изображений, гарантированно gif и jpg… некоторые другие тоже.
Может производить подстановку звёздочек из командной строки: например, “$ pho img00??.jpg” покажет все файлы, которые соответствуют по порядку. Пробел продвигает вперёд по списку, а Backspace — назад. Загружает отдельные изображения достаточно быстро — зажмите пробел, и вы будете проходить их.
Очень быстро, если вы хотите просмотреть кучу фотографий, пометить интересные, повернуть, удалить ненужные… Я всё время возвращаюсь к этому.
С веб-страницы выше:
pho (произносится как первый слог в “фото”) — это легкая программа для быстрого просмотра большого количества изображений, вращения или удаления некоторых и записи заметок о том, что делать с каждым изображением, — например, для просмотра сотен изображений после загрузки их с цифровой камеры.
Даже несмотря на то, что даны отличные ответы, моей проблемой было просмотр изображений непосредственно в терминале, без открытия любых графических приложений, поэтому я написал свой небольшой сценарий. Мне нужно было только идентифицировать изображение, и мне не нужны были все его детали, и я не хотел загружать любые относительно большие пакеты, если кому-то нужно, они тоже могут использовать это:
https://github.com/Deniz97/terminal-image-viewer
У меня есть оболочны́й псевдоним для macOS под названием preview
, который может (1) отображать изображение встроенно (-i
или --inline
опция), либо из stdin, либо по указанным путям к файлам, и (2) просто открывать изображение в приложении Apple Preview (без каких-либо опций), также либо из stdin, либо по путям к файлам, например:
cat image.jpg | preview
preview -i image.png
Встроенное отображение работает только с псевдонимом iTerm imgcat
, так что вам нужно установить, запустить iTerm и быть на переднем плане. Но preview
проверяет, верно ли это.
Доступно здесь: https://github.com/JayBrown/Tools/blob/master/Aliases/preview
feh.
Чтобы определить самый быстрый, мы должны измерить время. Вот мои времена для открытия и отображения контрольного изображения в формате png размером 700×500 пикселей. Я взял 10 образцов для каждой программы. Я использую Ubuntu22.04 с Win11/WSLg и 12-ю генерацию Intel core i7-12800H. Все времена указаны в миллисекундах.
Программа | среднее | минимум | максимум | стандартное отклонение | Метод измерения | комментарий |
---|---|---|---|---|---|---|
feh | 19.9 | 11 | 24 | 5.1 | время пользователя | ПЕРЕМОЖЕЦ |
catimg | 24.3 | 23 | 26 | 1.0 | реальное время | низкое разрешение, в терминале |
dillo | 27.0 | 16 | 36 | 6.8 | время пользователя | но нужно вручную увеличить окно |
tiv по умолчанию | 105.0 | 95 | 113 | 5.4 | реальное время | 5x10px эскиз в терминале. 390MB загрузка brew! |
tiv -h 50 -w 150 | 132.3 | 117 | 156 | 11.1 | реальное время | сравнимо с catimg, но с артефактами сжатия. 390MB загрузка brew! |
eog | 333.3 | 206 | 631 | 158.3 | время пользователя | но всё равно приятно |
picture-tube | 1377.2 | 1321 | 1448 | 43.2 | часы | ужасное качество изображения, открывает отдельное окно |
gimp | 1422.1 | 1333 | 1483 | 57.5 | время пользователя+системное время | открывает gimp, затем загружает изображение. Эти может быть недооценены на 30-50%. |
nautilus | 2633.3 | 2000 | 3500 | 522.0 | часы | только эскиз |
ffplay | 3055.6 | 2500 | 4000 | 583.3 | часы | нужна труба к dev/null |
display | 25925.6 | 57 | 98000 | 34239.5 | время пользователя, часы | UI кнопки не работают |
cacaview | 317888.9 | 5000 | 2748000 | 911341.2 | часы | ужасное качество изображения, открывает отдельное окно |
Какой лучший способ просматривать картинки (как вы видите эскизы изображений в Nautilus), когда вы работаете в терминале […]?
Эта часть вопроса о предварительном просмотре нескольких изображений одновременно пока не была должным образом рассмотрена. Большинство просмотрщиков изображений (за исключением TerminalImageViewer) не будут показывать несколько эскизов, если их вызвать с несколькими файлами изображений. Они могут отображать их в слайд-шоу, что не всегда удобно (например, при просмотре иконок).
В качестве решения я использую обычный файловый менеджер в режиме “эскиз” для отображения всех изображений, которые я скопировала во временную директорию. Например, чтобы отобразить все иконки из темы иконок KDE “Breeze”, где имя файла соответствует *search*
:
tmpdir=$(mktemp -d -t image-previews-XXXXX)
find /usr/share/icons/breeze -name "*search*" -exec \
bash -c '
tmpdir=$1;
file=$2;
newfile=${file/\/usr\/share\/icons\/breeze\//};
newfile=${newfile//\//-};
cp $file $tmpdir/$newfile
' _ $tmpdir {} \;
pcmanfm-qt $tmpdir
Обсуждение
Этот find
находит и копирует все иконки Breeze, соответствующие *search*
, в временную директорию, заменяя путь относительно директории установки Breeze на имя файла, в котором используется -
вместо разделителя директорий /
. Таким образом, все файлы находятся в одной директории для предварительного просмотра и не будут перезаписывать друг друга.
Затем это запускает файловый менеджер (здесь pcmanfm-qt
), чтобы показать файлы во временной директории. После запуска его необходимо вручную установить в режим просмотра эскизов для достижения лучших результатов. В отличие от других просмотрщиков изображений, файловые менеджеры обычно могут отображать SVG в превью-эскизах.
Команда find
использует технику с позиционными параметрами в подпроцессе, чтобы позволить выполнять несколько команд в find
, включая оценку переменных, как задокументировано здесь.
В Linux Mint:
xviewer logo.png
Если вы используете консоль с чистым текстом (даже не framebuffer), тогда ещё есть zgv –
https://www.svgalib.org/rus/zgv/
Требуется совместимый с ПК (т.е. i386 и VGA)
Ответ или решение
Как быстро просматривать изображения из терминала: эффективные методы и инструменты
Терминал является мощным инструментом для быстрой навигации по директориям и файлам. Однако, из-за его текстового формата, просматривать изображения может быть проблематично. К счастью, существует несколько методов и инструментов, позволяющих эффективно просматривать изображения непосредственно через терминал, что гораздо быстрее и удобнее, чем использовать графические интерфейсы.
1. Использование простых команд
xdg-open и gnome-open
Для пользователей среды рабочего стола Gnome, команда xdg-open
позволяет открывать файлы в соответствующих приложениях. Например, для просмотра изображения можно использовать:
xdg-open <image-name>
Альтернативно, можно установить gnome-open
и создать алиас:
alias open='gnome-open'
Используйте его следующим образом:
open file.jpg
2. Легкие графические просмотрщики изображений
-
feh: Это один из самых быстрых и популярных инструментов для просмотра изображений из терминала. Просто выполните:
feh <image-name>
Это приложение быстро открывает изображения и поддерживает множество команд для навигации.
-
eog (Eye of GNOME): Это стандартный просмотрщик изображений для Gnome. Его использование аналогично
feh
, и можно открывать изображения командой:eog <image-name>
-
Shotwell: Еще один надежный выбор для Gnome, позволяет быстро открывать и просматривать изображения.
3. Продвинутые инструменты для терминала
Terminal Image Viewer (TIV)
Если вы хотите улучшить презентацию изображений в терминале, используйте Terminal Image Viewer (tiv). Установите его с помощью:
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install
Используйте:
tiv <image-name>
catimg
Еще один инструмент, который позволяет просматривать изображения в стиле ASCII в терминале — это catimg:
catimg <image-name>
4. Вывод изображений в терминал
Если вы хотите отображать изображения непосредственно в самом терминале, обратите внимание на следующие инструменты:
-
chafa: Это утилита, которая преобразует изображения в ASCII или ANSI. Установите ее и используйте:
chafa <image-name>
-
img2sixel: Для терминалов, поддерживающих SIXEL, вы можете использовать
img2sixel
:img2sixel <image-name>
5. Использование веб-сервера
Если вы хотите просматривать несколько изображений одновременно, можно запустить Python HTTP-сервер в нужной директории:
python -m http.server
Затем откройте браузер на localhost:8000
, чтобы просмотреть все изображения.
Заключение
Эффективные методы просмотра изображений из терминала позволяют не только сэкономить время, но и значительно повысить продуктивность. Применяя вышеперечисленные инструменты и команды, вы можете легко интегрировать просмотр изображений в свой рабочий процесс в терминале. Не забудьте протестировать различные приложения, чтобы определить, какое из них лучше всего подходит для ваших нужд.