Pequeño programa C ++ para mostrar imágenes en un terminal (moderno) utilizando códigos ANSI RGB y caracteres gráficos de unicode bloque.
Existen varias herramientas similares (como timg ) que usan el carácter de medio bloque Unicode para mostrar dos píxeles de 24 bits por celda de caracteres. Este programa mejora la resolución al mapear células de píxeles 4x8 a diferentes caracteres Unicode, utilizando el siguiente algoritmo para cada celda de 4x8 píxeles de la imagen (potencialmente redactada):
Consulte la diferencia deshabilitando esta optimización utilizando la opción -0 . O simplemente eche un vistazo a la imagen de comparación al final de este texto.
tiv [options] < filename > [ < filename > ...] El caparazón ampliará los comodines. Por defecto, se mostrarán miniaturas y nombres de archivos si se proporciona más de una imagen. Para obtener una lista de opciones, ejecute el comando sin ningún parámetro o con --help .
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterImportante
Todos los métodos de instalación requieren instalar ImageMagick, una dependencia requerida. La mayoría de los administradores de paquetes deben instalarlo automáticamente.
Nuestro Makefile actualmente solo admite g++ . Debería ser posible compilar tiv manualmente utilizando cualquiera de sus compiladores favoritos que admitan los encabezados C ++ 17 y Unix ( ioctl.h y sysexits.h , específicamente) o windows.h . Los PR son bienvenidos.
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 No olvide instalar ImageMagick ... en Linux con sede en Debian a través de sudo apt install imagemagick y en macOS a través de brew install imagemagick .
brew install tivComo la carcasa de Apple original solo admite 256 modo de color (-256) y parece haber un espacio de línea adicional, distorsionando la imagen, también recomendamos instalar ITERM2:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (pero también rompe macOS), ver #103TIV se puede usar como API. Entonces, si siempre quisiste ejecutar tu FPS favorito en un caparazón, esta es la oportunidad.
Todo el código útil como una biblioteca está aislado en tiv_lib.h y tiv_lib.cc.
El principal punto de entrada es
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)La llamada toma una función std :: que permite que el código TIV solicite píxeles desde su framebuffer.
A partir de este FrameBuffer, la llamada consultará píxeles para un rectángulo de 4x8 píxeles, donde X0 e Y0 definen la esquina superior izquierda. La llamada busca el mejor carácter y colores de unicode gráficos para aproximar esta celda de la imagen, y los devuelve en una estructura de Chardata.
Me complace aceptar contribuciones útiles bajo la licencia Apache 2.0, pero ...
La mayoría de los ejemplos fueron filmados con la versión Java de este programa, que debería tener una producción equivalente pero más lenta por milenia en los años de la CPU.
Si varias imágenes coinciden con la especificación del nombre de archivo, se muestran miniaturas.
Para el siguiente ejemplo, la imagen superior se generó con la optimización de caracteres deshabilitada a través de la opción -0 .
Usted puede usar este código en el GPL (3 o posterior) o la versión 2.0 de la licencia Apache. Incluimos la biblioteca CIMG, que tiene licencia bajo CECILL 2.0 (cerca de GPL y compatible con ella) o [Cecill-C] (https://spdx.org/licenses/cecill-c) (cerca de LGPL y compatible con Apache).