Programa C ++ pequeno para exibir imagens em um terminal (moderno) usando códigos RGB ANSI e caracteres gráficos de bloco unicode.
Existem várias ferramentas semelhantes (como timg ) que usam o caractere de meio bloco Unicode para exibir dois pixels de 24 bits por célula de caracteres. Este programa aprimora a resolução mapeando células de 4x8 pixels para diferentes caracteres Unicode, usando o algoritmo a seguir para cada célula de 4x8 pixels da imagem (potencialmente reduzida):
Veja a diferença desativando essa otimização usando a opção -0 . Ou apenas dê uma olhada na imagem de comparação no final deste texto.
tiv [options] < filename > [ < filename > ...] A concha expandirá curingas. Por padrão, as miniaturas e nomes de arquivos serão exibidos se mais de uma imagem for fornecida. Para uma lista de opções, execute o comando sem parâmetros ou com --help .
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterImportante
Todos os métodos de instalação requerem a instalação do ImageMagick, uma dependência necessária. A maioria dos gerentes de pacotes deve instalá -lo automaticamente.
Nosso Makefile atualmente suporta apenas g++ . Deve ser possível compilar tiv usando qualquer um dos seus compiladores favoritos que suportam cabeçalhos C ++ 17 e Unix ( ioctl.h e sysexits.h , especificamente) ou windows.h . Os PRs são bem -vindos.
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 Por favor, não se esqueça de instalar o ImageMagick ... no Linux, com sede no Debian, via sudo apt install imagemagick e no macOS via brew install imagemagick .
brew install tivComo o Apple Shell original suporta apenas o modo de cor 256 (-256) e parece haver algum espaçamento extra de linha, distorcendo a imagem, também recomendamos a instalação do ITERM2:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (mas também quebra o macOS), consulte #103O TIV pode ser usado como uma API. Portanto, se você sempre quis executar seu FPS favorito em uma concha, esta é a oportunidade.
Todo o código útil como uma biblioteca é isolado em tiv_lib.h e tiv_lib.cc.
O ponto de entrada principal é
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)A chamada pega uma função STD :: que permite que o código TIV solicite pixels do seu FrameBuffer.
A partir deste Framebuffer, a chamada consultará pixels para um retângulo de 4x8 pixels, onde X0 e Y0 definem o canto superior esquerdo. A chamada pesquisa o melhor caractere e cores gráficas Unicode para aproximar esta célula da imagem e as retorna em uma estrutura chardata.
Fico feliz em aceitar contribuições úteis sob a licença Apache 2.0, mas ...
A maioria dos exemplos foi filmada com a versão Java deste programa, que deve ter saída equivalente, mas mais lenta por Millenia nos anos da CPU.
Se várias imagens correspondem à especificação do nome do arquivo, as miniaturas serão mostradas.
Para o exemplo abaixo, a imagem superior foi gerada com a otimização de caracteres desativada através da opção -0 .
Você é livre para usar este código no GPL (3 ou posterior) ou versão 2.0 da licença Apache. Incluímos a biblioteca CIMG, licenciada no Cecill 2.0 (próxima a GPL e compatível com ela) ou [Cecill-C] (https://spdx.org/license/cecill-c) (próximo ao LGPL e compatível com apache).