Small C ++ Программа для отображения изображений в (современном) терминале с использованием кодов RGB ANSI и графических символов блока Unicode.
Существуют различные аналогичные инструменты (такие как timg ), которые используют символ полукодного половины блока для отображения двух 24 -битных пикселей на ячейку символа. Эта программа усиливает разрешение путем отображения 4x8 пиксельных ячеек с разными символами Unicode, используя следующий алгоритм для каждой 4x8 пиксельной ячейки (потенциально опускаемого) изображения:
Смотрите разницу, отключив эту оптимизацию, используя опцию -0 . Или просто посмотрите на сравнение изображения в конце этого текста.
tiv [options] < filename > [ < filename > ...] Оболочка расширит подстановочные знаки. По умолчанию миниатюры и имена файлов будут отображаться, если будет предоставлено более одного изображения. Для списка параметров запустите команду без каких -либо параметров или с --help .
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterВажный
Все методы установки требуют установки ImageMagick, необходимой зависимости. Большинство менеджеров пакетов должны установить его автоматически.
Наш Makefile в настоящее время поддерживает только g++ . Должно быть возможно компилировать tiv вручную, используя любой из ваших любимых компиляторов, которые поддерживают заголовки C ++ 17 и Unix ( ioctl.h и sysexits.h , в частности) или windows.h . PRS приветствуются.
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src
make
# To move the tiv binary into your PATH (hopefully), also do
sudo make install Пожалуйста, не забудьте установить ImageMagick ... на Linux на базе Debian через sudo apt install imagemagick и на MacOS через brew install imagemagick .
brew install tivПоскольку оригинальная Apple Shell поддерживает только цветовой режим 256 (-256), и, похоже, есть дополнительное расстояние между линиями, искажая изображение, мы также рекомендуем установить iTerm2:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (но он также ломает MacOS), см. #103TIV можно использовать в качестве API. Так что, если вы всегда хотели запустить свой любимый FPS в оболочке, это возможность.
Весь код, полезный в виде библиотеки, изолирован в tiv_lib.h и tiv_lib.cc.
Основная точка входа
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)Вызов принимает функцию std ::, которая позволяет коду TIV запросить пиксели с вашего кадриста.
Из этого кадриста вызов будет запросить пиксели для прямоугольника 4x8 пикселей, где x0 и y0 определяют верхний левый угол. Вызов ищет лучшего символа и цветов Unicode Graphics, чтобы приблизить эту ячейку изображения, и возвращает их в структуре Chardata.
Я рад принять полезные взносы по лицензии Apache 2.0, но ...
Большинство примеров были сняты с Java -версией этой программы, которая должна иметь эквивалентный выход, но медленнее на тысячелетия в годы CPU.
Если несколько изображений соответствуют спецификации файла, отображаются миниатюры.
Для примера ниже, верхнее изображение было сгенерировано с помощью оптимизации символов отключена через опцию -0 .
Вы можете использовать этот код в GPL (3 или позже) или версии 2.0 лицензии Apache. Мы включаем библиотеку CIMG, которая лицензирована либо в Cecill 2.0 (близко к GPL и совместимой с ней) или [cecill-c] (https://spdx.org/licenses/cecill-c) (близко к LGPL и совместимо с Apache).