Por Leonardo - Umactual
asciipixels é uma biblioteca rápida e fácil de converter imagens e vídeos em arte ASCII altamente personalizável. A biblioteca possui quatro funções primárias que fazem todo o trabalho de asciificação e salvam o resultado como uma imagem, gif ou vídeo: image.asciify() , image.dynamic_asciify() , video.asciify() e video.dynamic_asciify() .
Para um controle mais granular do que o programa deve fazer, a classe CoreAsciifier (a classe por trás das funções primárias de Asciipixels) e as funções do wrapper para o ImageMagick e o FFMPEG também estão disponíveis.
O que realmente diferencia a Biblioteca Asciipixels é a funcionalidade dinâmica . Nas funções image.dynamic_asciify() e video.dynamic_asciify() Alguns parâmetros podem mudar com o tempo. O usuário pode passar as chamáveis que recebem o número do quadro e retornam o valor do parâmetro, em vez de passar o próprio valor codificado. No exemplo abaixo, o parâmetro definition aumenta em 16 unidades a cada quadro. É modelado por uma expressão lambda muito simples.

NOTA: O ASCIIPIXELS depende de dois softwares de linha de comando específicos: ImageMagick e FFMPEG . Se você é um nerd da CLI e já os possui, vá em frente com este guia. Caso contrário, vá para a seção de instalação.
Use a função correspondente, dependendo do seu caso de uso:
image.asciify() converte a imagem em imagem. A arte ASCII gerada é devolvida como uma corda e opcionalmente salva em um txt.
image.dynamic_asciify() converte imagem em vídeo gif ou mp4. Suporta parâmetros dinâmicos.
video.asciify() converte vídeo em vídeo.
video.dynamic_asciify() converte vídeo em vídeo. Suporta parâmetros dinâmicos.
Todos os quatro têm o path do arquivo de entrada como o primeiro argumento. O restante dos argumentos tem valores padrão . Algo nesse sentido é suficiente para você começar:
import asciipixels as ap
ap . image . asciify ( 'foo.png' ) Isso gerará uma nova imagem asciificada chamada foo2.png .
É importante observar que todas as funções, exceto image.asciify() requerem um if __name__ == '__main__' Verifique o nível superior do código do usuário ( a menos que você esteja usando o Python interativo na linha de comando). Isso ocorre porque a biblioteca usa multiprocessamento para acelerar a geração de quadros. Portanto, para asciificar um vídeo, por exemplo, você pode fazer o seguinte:
import asciipixels as ap
if __name__ == '__main__' :
ap . video . asciify ( 'foo.mp4' ) O parâmetro mais importante para brincar é a definition . É simplesmente o número de caracteres no eixo horizontal . Padrões para 100 em todas as funções. Defina -o muito alto e a arte ASCII parecerá arte. Defina -o muito baixo e parecerá ASCII.
Além disso, lembre -se de que você pode definir a resolução de saída da imagem/vídeo. As dimensões de saída se aproximam das dimensões de entrada por padrão, mas você pode alterar isso com o argumento out_width .
Por fim, se você decidir trabalhar com texto escuro em um fundo leve , lembre-se de definir reverse_chars como True para corrigir o mapeamento de pixel-to-ASCII.
Como exemplo final, fiz o GIF grande na seção O que é 'dinâmico' com o seguinte código:
import asciipixels as ap
if __name__ == '__main__' :
ap . image . dynamic_asciify (
'ceo.png' ,
bg_color = 255 ,
txt_color = 0 ,
definition = lambda f : f * 16 ,
fps = 2 ,
frame_count = 7 ,
out_width = 1000 ,
reverse_chars = True
)A lista completa de parâmetros/argumentos de uma determinada função primária pode ser encontrada em sua documentação.
Para instalar asciipixels, use PIP no terminal:
Windows
pip install asciipixels
MacOS / Linux
python3 -m pip install asciipixels
O Asciipixels possui duas dependências que não estão instaladas automaticamente. Estes são imagemagick , para manipulação de imagens e FFMPEG , para manipulação de vídeo e áudio. Você pode baixá -los em seus sites oficiais ou usando o HomeBrew (se aplicável).
Instale o ImageMagick aqui
Instale o FFMPEG aqui
A arte ASCII é simplesmente a representação de imagens (ou vídeo) com caracteres e letras. Essa arte pode ser composta usando caracteres que correspondem ao brilho ou ao contorno de uma parte de uma imagem. Esta biblioteca funciona com o aspecto do brilho.