Kleines C ++ - Programm zum Anzeigen von Bildern in einem (modernen) Terminal mit RGB -ANSI -Codes und Unicode -Blockgrafikzeichen.
Es gibt verschiedene ähnliche Werkzeuge (z. B. timg ), die das Unicode -Halbblock -Zeichen verwenden, um zwei 24 -Bit -Pixel pro Zeichenzelle anzuzeigen. Dieses Programm verbessert die Auflösung, indem 4x8 Pixelzellen auf verschiedene Unicode -Zeichen abgebildet werden, wobei der folgende Algorithmus für jede 4x8 -Pixel -Zelle des (potenziell heruntergezogenen) Bildes verwendet wird:
Sehen Sie den Unterschied an, indem Sie diese Optimierung mit der Option -0 deaktivieren. Oder schauen Sie sich einfach das Vergleichsbild am Ende dieses Textes an.
tiv [options] < filename > [ < filename > ...] Die Schale wird Wildcards erweitern. Standardmäßig werden Miniaturansichten und Dateinamen angezeigt, wenn mehr als ein Bild bereitgestellt wird. Führen Sie für eine Liste von Optionen den Befehl ohne Parameter oder mit --help aus.
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterWichtig
Alle Installationsmethoden erfordern die Installation von Imagemagick, eine erforderliche Abhängigkeit. Die meisten Paketmanager sollten es automatisch installieren.
Unser Makefile unterstützt derzeit nur g++ . Es sollte möglich sein, tiv manuell mit einem Ihrer Lieblings -Compiler zu kompilieren, die C ++ 17 und UNIX -Header ( ioctl.h und sysexits.h , speziell) oder windows.h unterstützen. PRs sind willkommen.
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 Bitte vergessen Sie nicht, Imagemagick zu installieren ... unter Debian -basiertes Linux über sudo apt install imagemagick und auf MacOS über brew install imagemagick .
brew install tivDa die ursprüngliche Apple-Shell nur den 256-Farbmodus (-256) unterstützt und es einen zusätzlichen Zeilenabstand zu geben scheint. Wenn Sie das Bild verzerren, empfehlen wir außerdem, ITERM2 zu installieren:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (aber es bricht auch MacOS), siehe #103TIV kann als API verwendet werden. Wenn Sie also immer Ihre Lieblings -FPS in einer Hülle betreiben wollten, ist dies die Gelegenheit.
Der gesamte als Bibliothek nützliche Code ist in tiv_lib.h und tiv_lib.cc isoliert.
Der Haupteintrittspunkt ist
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)Der Anruf enthält eine STD :: -Funktion, mit der der TIV -Code Pixel von Ihrem FrameBuffer anfordern kann.
Aus diesem FrameBuffer wird der Anruf Pixel für ein 4x8 -Pixel -Rechteck abfragt, wobei X0 und Y0 die obere linke Ecke definieren. Der Anruf sucht nach dem besten Unicode -Grafikcharakter und den Farben, um diese Bildzelle zu approximieren, und gibt diese in einer Chardata -Struktur zurück.
Gerne akzeptiere ich nützliche Beiträge unter der Apache 2.0 -Lizenz, aber ...
Die meisten Beispiele wurden mit der Java -Version dieses Programms gedreht, die in CPU -Jahren eine gleichwertige Ausgabe haben sollte, aber für Millenia langsamer.
Wenn mehrere Bilder mit der Dateinamenspezifikation übereinstimmen, werden Miniaturansichten angezeigt.
Für das folgende Beispiel wurde das obere Bild mit der Zeichenoptimierung über die Option -0 generiert.
Sie können diesen Code entweder unter der GPL (3 oder später) oder Version 2.0 der Apache -Lizenz verwenden. Wir enthalten die CIMG-Bibliothek, die entweder unter Cecill 2.0 (in der Nähe von GPL und damit kompatibel) oder [CECILL-C] (https://spdx.org/licenses/cecill-c) (in der Nähe von LGPL und mit Apache kompatibel) lizenziert ist.