Какой самый быстрый способ просмотреть изображения из терминала?

Вопрос или проблема

Терминал — это очень быстрый и удобный способ быстрого доступа к каталогам и файлам (быстрее, чем искать и нажимать на каталог).

Одно, что он не может показывать в текстовом режиме, это “картины”.

Какой лучший способ просматривать картинки (как вы видите эскизы изображений в Nautilus), когда вы работаете в терминале (например, команда nautilus или любая другая программа — но должна быть быстрой и удобной)?

Способ “двойного щелчка” по файлу из командной строки — это xdg-open.

Если вы на Gnome (вероятно, если вы используете Nautilus), вы можете использовать eog напрямую или любую другую программу для изображений (feh довольно хороша).

feh <имя-изображения>      

Если вы хотите легко обратиться к файлу имя-изображения.

Если вы установили imagemagick, вы можете использовать его очень удобный инструмент командной строки display.

display path/to/picture.png

Я обычно запускаю python -m http.server 8080python2: 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 поддерживает отображение встроенных изображений:

iTerm2 встроенное изображение

Как вы можете себе представить, это может быть очень полезно, когда вы просто хотите отобразить изображение, не заходя и не открывая 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.

Файловый менеджер Ranger включает просмотр изображений в настройках.
Файловый менеджер Ranger с просмотром изображений

В 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.

скриншот анимированного GIF от chafa

pxl — это довольно крутой вариант, который ещё не был упомянут. Похож на picture-tube, о котором говорилось раньше, хотя он поддерживает больше форматов изображений.

Я просто использую веб-браузер Chrome, который поддерживает jpg, svg, png, ico, анимированные gif… в основном всё, что мне может понадобиться:

google-chrome ./myphoto.jpg

Если вы предпочитаете Firefox:

firefox ./myphoto.jpg

img2sixel

Быстро, удобно и легко в использовании.

Чтобы использовать:

$ 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:-

Сессия Konsole с изображением, отображаемым с использованием вывода ImageMagick SIXEL
Пример изображения: Энди Рего и Крисси Маккларен, 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, чтобы просмотреть все изображения.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...