Отображение картинок в консоли Linux
Задумался тут, можно ли показать изображение в консоли Linux без использования X-Server'а. Ведь в современных Линуксах консоль, по большей части, только маскируются под текстовую, а на самом деле, с определенного этапа загрузки ОС, она вполне себе графическая, и фреймбуфер у них есть, и все прочее для отображения картинки. Шрифты же она отображает, причем не как в DOS, где в консоли никакого графического режима по умолчанию нет, и единственный шрифт 80x25 для VGA-режима и 40x25 для EGA (о-о-о-чень старые мониторы и видеочипы), ЕМНИС.
В Linux наоборот, надо еще пошаманить, чтобы сэмулировать режим VGA в "голой" консоли без иксов. Если не шаманить, то наоборот, может получиться как-то так:
Мелко, противно, нихрена не видно
Справедливости ради, в DOS есть и графические режимы, и даже софт для отображения картинок, но, фактически отображение будет не совсем "в консоли", программа должна будет переключить видеоадаптер в графический режим, и там уже сама как-то справляться с изображениями.
Вернемся к Linux. Итак, консоль вполне себе графическая, так есть ли софт? Как выяснилось, есть.
Называется программа FIM. Программа небольшая, поддерживает основные форматы (BMP, GIF, JPEG, png, tiff) и некоторые другие (PPhotoCD, ppm, XWD), а для остальных она пытается использовать ImageMagick. Программа основана на Fbi (framebuffer imageviewer - это нечто вроде
В зависимости от того, где она была запущена, программа использует разные механизмы отображения графики:
- если она выполняется в эмуляторе терминала под иксами, то использует библиотеку SDL или imlib2. Впрочем, в иксах, лично у меня, fim смухлевал. В том же самом терминале рисовать не стал, а создал отдельное окно.
- если запущена в "голой" консоли без иксов, использует консольный фреймбуфер
- и, что довольно забавно, если попытаться запустить ее на терминале, который графику не поддерживает (например, через PuTTY), то программа преобразует изображение в ASCII-арт, ну тут уж, что называется, как получится.
Для Debian/Ubuntu и подобных им дистрибутивов есть готовый пакет, для Slackware пришлось собирать из исходников, впрочем, у меня собралось с первого раза.
fim <имя файла 1> [имя файла 2] [имя файла 3...]
- для просмотра одного или нескольких файлов.fim -R <каталог>
, например, fim -R ~/Pictures/
- для просмотра изображений в каталоге.n - следующий файл
p - предыдущий
+ - увеличить
- - уменьшить
r - поворот
m - отзеркалить
f - отзеркалить и перевернуть вверх ногами
q, ESC - выход
На самом деле у утилиты довольно много возможностей, есть командный режим, как у Vim, в котором изображение можно редактировать, подробное описание всех возможностей - в мануале на официальном сайте.
Котик в "голой" консоли
А вот в иксах он смухлевал, хотя котика нарисовал
Псевдографический котик в текстовом терминале. Довольно ничего получилось.
Ссылки
Официальный сайт
Исходники Копия
Мой пакет для Slackware
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/08/21/otob