Uma arte decorativa usada por muitos nerds e geeks dos anos 70, 80, 90 e 2000 perdida em meio a um mundo digital repleto de fotos e vídeos, mas que ainda sobrevive não apenas em vários terminais Linux/BSD mas também, com fôlego renovado, na web.
Para os iniciantes
ASCII-ART é o nome dado a arte (no sentido de expressão artística) usando exclusivamente os tão famosos quanto antigos caracteres ASCII, os caracteres básicos que usamos no dia-a-dia cada vez que pressionamos uma tecla no nosso teclado.
Embora algo parecido já fosse criado há muitas décadas, usando as antigas máquinas de datilografia, e inclusive haja registros de imagens enviadas por “teletipo” em 1923, foi com o computador que elas viraram moda (hoje, nem tanto).
Dentre as mais antigas temos as criadas em 1966 por Kenneth Knowlton. Sugiro aos curiosos a leitura do artigo sobre ASCIIArt na Wikipédia (https://pt.wikipedia.org/wiki/ASCII_art) bem como os links de referência que levam a uma viagem no tempo por esta arte.
Como criar
Há inúmeras formas de se criar ASCII art. A mais básica é abrindo um editor de textos e usando os símbolos do seu teclado para representar formas e desenhos.
Como por exemplo esta aqui:
──▄▀▀▀▄─────────────── ──█───█─────────────── ─███████─────────▄▀▀▄─ ░██─▀─██░░█▀█▀▀▀▀█░░█░ ░███▄███░░▀░▀░░░░░▀▀░░
Se você consegue ver um cadeado e uma chave na representação acima, então você tem grande probabilidade de ser ou de se tornar fã de ASCII Art (créditos).
Como se vê naquele exemplo, podem ser usados caracteres difíceis de se obter no teclado, como o caracter estendido “█” (ASCII code 219) mas eles existem na tabela ASCII (na verdade ele existe em sua extensão chamada CP437, usada em computador com MS-DOS e Windows – vide este texto sobre o assunto) e são obtidos a partir da digitação do seu código ASCII, que pode variar de acordo com o seu sistema operacional.
Embora trabalhoso, isso não é impedimento para os artistas de plantão que para isso podem-se usar um carácter mais facilmente disponível no teclado como o “#” e depois usar algum comando, script ou ferramenta que converta um caracter em outro (usuários Linux se lembrarão de “tr”, “sed” etc).
Mas hoje em dia, e até mesmo naquela época, havia e há outras maneiras. Por exemplo, para quem não quem criar de fato, mas apenas usar, pode se valer de ferramentas prontas sob a forma de comando via CLI ou aplicação web disponíveis gratuitamente.
Ferramentas em linha de comando
Duas ferramentas que me recordo do tempo que ainda estava engatinhando no Linux mas que existem e são mantidas até hoje são figlet e toilet.
Em sistemas “debian-like” você pode instalá-las com o tradicional apt-get e suas variantes.
sudo apt-get install figlet toilet
Ambas são usadas para escrever com letras grandes na tela. Por exemplo:
figlet -f script Welington
_ _
(_| | |_/ | | o
| | | _ | | _ _ __,_|_ __ _ _
| | ||/ |/ | / |/ | / | | / \_/ |/ |
\_/ \_/ |__/|__/|_/ | |_/\_/|/|_/\__/ | |_/
/|
\|
ou ainda:
figlet -f pagga Welington
░█░█░█▀▀░█░░░▀█▀░█▀█░█▀▀░▀█▀░█▀█░█▀█
░█▄█░█▀▀░█░░░░█░░█░█░█░█░░█░░█░█░█░█
░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░░▀░░▀▀▀░▀░▀
O comando “toilet” faz exatamente a mesma coisa, porém possui alguns incrementos, como por exemplo permite duas formas de saída colorida com os parâmetros “–gay” e “–metal”, além de ajustes da largura de tela, exportação para outros formatos etc.
Ambos os comandos permitem o uso do argumento “-f” para escolha das fontes (como nos exemplos que usei “script” e “pagga”).
A lista é bem pequena, mas vale a diversão. Para conhecê-las a forma mais fácil é entrar no diretório “/usr/share/figlet” e listar todos os arquivos com extensão “tlf” e “flf”.
( cd /usr/share/figlet/ ; ls *.?lf )
ascii12.tlf emboss.tlf small.flf
ascii9.tlf future.tlf smascii12.tlf
banner.flf ivrit.flf smascii9.tlf
bigascii12.tlf lean.flf smblock.tlf
bigascii9.tlf letter.tlf smbraille.tlf
big.flf mini.flf smmono12.tlf
bigmono12.tlf mnemonic.flf smmono9.tlf
bigmono9.tlf mono12.tlf smscript.flf
block.flf mono9.tlf smshadow.flf
bubble.flf pagga.tlf smslant.flf
circle.tlf script.flf standard.flf
digital.flf shadow.flf term.flf
emboss2.tlf slant.flf wideterm.tlf
Esta saída acima lista todas as opções de fontes disponíveis para os comandos toilet e figlet no meu sistema.
Outra ferramenta já não tão antiga assim porém para lidar com imagens é o “ASCIIART”, desenvolvida em Ruby. Ela pode ser instalada a partir do seu apt-get, da mesma forma que as anteriores, mas diferentemente daquelas, esta lê um arquivo de imagem “jpg” ou “png” e converte o seu conteúdo para ASCI-Art.
sudo apt-get install asciiart
Veja exemplo em que converto um arquivo de imagem com o logo da distribuição Ubuntu para ascii-art.
O parâmetro “-w 80” limita o desenho em 80 caracteres que é a largura do meu terminal, podendo ser ajustado se necessário (o padrão são 100 caracteres). Consulte o manual da ferramenta para conhecer mais sobre as suas opções.
asciiart -w 80 'Imagens/ubuntulogo-180x180.png'
+--------------------------------------------------------------------------------+
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|ooooooooooooooooooooooooooooooooooooo+o+++o+oooooooooooooooooooooooooooooooooooo|
|ooooooooooooooooooooooooooooooo++::~~~~~~~~~~::++ooooooooooooooooooooooooooooooo|
|ooooooooooooooooooooooooooooo::~~~~~~~~~~~~~~~~~~:++oooooooooooooooooooooooooooo|
|ooooooooooooooooooooooooooo:~~~~~~~~~~~~~~~~:+:~~~~~++oooooooooooooooooooooooooo|
|ooooooooooooooooooooooooo+~~~~~~~~~~~:::::~:oooo~~~~~~:ooooooooooooooooooooooooo|
|oooooooooooooooooooooooo:~~~~~~~~~:~+oooooo:+++:~~~~~~~:oooooooooooooooooooooooo|
|ooooooooooooooooooooooo+~~~~~~~~+oo+:+:++:+oo+o+:~~~~~~~:ooooooooooooooooooooooo|
|oooooooooooooooooooooo+~~~~~~~~+ooo:~~~~~~~~:+oo+~~~~~~~~+oooooooooooooooooooooo|
|oooooooooooooooooooooo+~~~~:+::ooo~~~~~~~~~~~:+oo+~~~~~~~:oooooooooooooooooooooo|
|oooooooooooooooooooooo:~~~+ooo+:o+~~~~~~~~~~~~:+++~~~~~~~:oooooooooooooooooooooo|
|oooooooooooooooooooooo:~~~:+++++o+~~~~~~~~~~~~+oo+~~~~~~~:oooooooooooooooooooooo|
|oooooooooooooooooooooo+~~~~~~~:ooo+~~~~~~~~~~+oo+:~~~~~~~+oooooooooooooooooooooo|
|ooooooooooooooooooooooo:~~~~~~~:+oo+~::~~::++oo+:~~~~~~~:+oooooooooooooooooooooo|
|ooooooooooooooooooooooo+:~~~~~~~::+:+oooooo++++:~~~~~~~:+ooooooooooooooooooooooo|
|oooooooooooooooooooooooo+:~~~~~~~~~~:+++++::oooo:~~~~~:+oooooooooooooooooooooooo|
|oooooooooooooooooooooooooo+~~~~~~~~~~~~~~~~:++++~~~~::oooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooo+:~~~~~~~~~~~~~~~~~~~~:+oooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooo++:~~~~~~~~~~~~~~::+oooooooooooooooooooooooooooooo|
|ooooooooooooooooooooooooooooooooooo+++::++:++ooooooooooooooooooooooooooooooooooo|
|ooooooooooooooooooo+oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooo~.+ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooo. +oooooooooooooooooooooooooooooooooo:.:oooooooooooooooooooooo|
|oooooo+ooooooo+oo+. +++++oooooo+ooooooo+oooo++++++ooooo~ ~++++oo++oooooo+ooooooo|
|ooooo~ :oooo+.~oo+. ~~~~..~+oo: ~ooooo..ooo. ~~~~..:ooo~ .~~~~o+..ooooo~ :oooooo|
|ooooo~ ~oooo+ .+oo +oooo~ ~oo~ ~oooo+ +o+. +ooo+. :oo~ :ooooo+ .ooooo~ :oooooo|
|ooooo~ ~oooo+ .ooo +ooooo. +o: ~oooo+. +oo +oooo~ ~oo~ :ooooo+ .ooooo~ :oooooo|
|ooooo~ ~oooo+ .oo+. +oooo+ +o: ~oooo+. +oo. +oooo: ~oo~ :ooooo+ .+oooo~ :oooooo|
|ooooo+ :++o: .oo+. ++o+:. ~oo+. :+o++ +oo +oooo~ ~oo: .+o++oo~ ~++o+~ :o+oooo|
|oooooo+~~~~~~.~ooo~.~~~.~~+oooo+~.~~~~~~ooo~~+oooo:.:ooo:~.~~~+o+:~.~~~.~+oooooo|
|ooooooooooo+ooooooooo+ooooooooooooo+oooooooooooooooooooooo+oooooooooo+oooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
|oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
+--------------------------------------------------------------------------------+
Caso o seu navegador dificulte a visualização da imagem acima, segue abaixo a captura de tela do meu terminal com o resultado.
Para fins comparativos, a imagem original usada neste exemplo é esta aqui:
Observe que neste caso eu usei uma imagem simples e honestamente … peguem leve com a escolha da imagem. Não queiram pegar a uma foto com todas as galáxias do espaço observável ou uma paisagem repleta de detalhes para converte-las em ASCII. O resultado não será legal e não é este o propósito da ferramenta, OK!?
Ferramentas online
Não vivemos mais nos anos 1970 mas desde aquela época a Internet que estava engatinhando começou a ser recheada de ferramentas para inúmeros fins, inclusive para criar ASCII-Art.
Se quiser conhece-los, uma busca no Google retornará algumas dezenas ou talvez até centenas de ferramentas para este propósito.
Os links que apresento aqui são apenas uns poucos que sobraram nos “favoritos” do meu navegador após fazer uma limpeza removendo o que estava quebrado e que oferecem algum recurso relacionado ao tema “ASCII-Art”.
IMPORTANTE: eu NÃO endosso, NÃO apoio NEM TENHO qualquer vínculo com estes sites, seus autores ou com suas ideias e opiniões, apenas estou indicando ferramentas relacionadas ao tema deste texto.
- Imagens ASCII – https://www.asciiart.eu/
- Banners e converte imagens para ASCII – https://manytools.org/hacker-tools/ascii-banner/
- Banners e mais – http://patorjk.com/software/taag/
- Banners e figuras – https://textkool.com/en/ascii-art-generator
- Banners – http://www.network-science.de/ascii/
- Banners e outras ferramentas – https://pt.rakko.tools/tools/68/
- Banners e outras ferramentas – http://www.desmoulins.fr/index_us.php?pg=scripts!online!asciiart&start
- Banners – https://fsymbols.com/generators/carty/
- Banner e mais – https://texteditor.com/multiline-text-art/
Caso você encontre ou crie qualquer imagem nestes sites e queira aproveitá-la no seu terminal, basta selecionar, copiar e colar o conteúdo (que não é nada mais do que texto) em algum editor de textos simples como os conhecidos “vi”, “nano”, “mcedit” etc.
Se preferir, pode usar o “cat” pela linha de comandos como no exemplo abaixo, onde após digitar o comando (primeira linha) eu colei o conteúdo criado, teclei ENTER e ao digitar “eof [ENTER]” o arquivo foi criado com a imagem que queria.
cat <<eof >meunome.asc
╭╮╭╮╭╮╱╱╭╮╱╱╱╱╱╱╱╭╮╱╱╱╱╱╱╱╭━━╮
┃┃┃┃┃┃╱╱┃┃╱╱╱╱╱╱╭╯╰╮╱╱╱╱╱╱┃╭╮┃
┃┃┃┃┃┣━━┫┃╭┳━╮╭━┻╮╭╋━━┳━╮╱┃╰╯╰┳━┳━━┳━━┳━━╮
┃╰╯╰╯┃┃━┫┃┣┫╭╮┫╭╮┃┃┃╭╮┃╭╮╮┃╭━╮┃╭┫╭╮┃╭╮┃╭╮┃
╰╮╭╮╭┫┃━┫╰┫┃┃┃┃╰╯┃╰┫╰╯┃┃┃┃┃╰━╯┃┃┃╭╮┃╰╯┃╭╮┃
╱╰╯╰╯╰━━┻━┻┻╯╰┻━╮┣━┻━━┻╯╰╯╰━━━┻╯╰╯╰┻━╮┣╯╰╯
╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━╯┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━╯┃
╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰━━╯╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰━━╯
eof
Existem outras ferramentas e sites que fazem o mesmo ou muito mais do que isso. Se o assunto interessar, sugiro uma pesquisa no Google ou no buscador de sua preferência e não deixe de recomendar ou mostrar sua arte aqui nos comentários.
Até a próxima!