Como fazer ASCII algoritmos de conversão de imagem do trabalho de arte? [fechadas]

StackOverflow https://stackoverflow.com/questions/394882

  •  23-08-2019
  •  | 
  •  

Pergunta

Há alguns "imagem para arte ASCII" agradável livre sites de conversão como este: ASCII-art.org

Como é que tal trabalho algoritmo de conversão de imagem?

                         ,                     
                     .   W    ,                
                     W   W    @                
                     W  ,W    W                
                  ,  W, :W*  .W  .             
                  #  WW @WW  WW  #             
                  W  WW.WWW  WW: W             
                  W. WW*WWW# WW@ W             
               * :WW.WWWWWWW@WWW@W  #          
              +* #WW#WWWWWWWWWWWWW# W          
              W# @WWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW@W#         
             ,WW.WWWWWWWWWWWWWWWWWWWWW         
              WW@WWWWWWWWWWWWWWWWWWWWW         
            : WWWWWWWWWWWWWWWWWWWWWWWW :       
            @ WWWWWWWW@WWWWWWW@@WWWWWW.        
            W*WWWWWW::::@WWW:::::#WWWWW        
            WWWWWW@::   :+*:.   ::@WWWW        
            WWWWW@:*:.::     .,.:.:WWWW        
            @WWWW#:.:::.     .:: #:@WWW        
            :WWW@:#. ::     :WWWW:@WWWW        
             WWW#*:W@*@W     .   W:#WWW        
            #WWWW:@      ::   ::  *WWWW        
            W@WW*W  .::,.::::,:+  @@WW#,       
            WWWW## ,,.: .:::.: .  .WWW:,       
            @WWW@:   W..::::: #.  :WWWW        
             WWWW::  *..:.  ::.,. :WWWW        
             WWWW:: :.:.:   :  :: ,@WW@        
             WWWW:  .:,  :  ,,     :WW,        
             .: #         :  ,     : *         
              W +    .,  :::  .,   : @         
              W ::                .: W         
           @,,,W:.  ,, ::*@*:,  . :@W.,,@      
         +.....*: : : .#WWWWW:  : .#:....+,    
        @...:::*:,, : :WWWWWWW, ,  *::::..,#   
      :...::::::W:,   @W::::*W.   :W:::::...#  
     @@@@@@@@@@@W@@@@@W@@@@@@W@@@@@W@@@@@@@@@@:

Foi útil?

Solução

O conceito-imagem de nível grande é simples:

  1. Cada personagem impressão pode ser atribuído um valor aproximado de escala de cinza; o "at" @ sinal, obviamente, é visualmente mais escura do que o "plus" + sinal, por exemplo. O efeito pode variar, dependendo da fonte e espaçamento realmente utilizados.

  2. Com base nas proporções da fonte escolhida, grupo a imagem de entrada em blocos de peis rectangulares com largura e altura constante (por exemplo, um rectângulo de 4 pixels de largura e 5 pixels de altura). Cada um desses blocos se tornará um personagem na saída. (Usando os blocos de pixels que acabamos de mencionar, uma imagem de 240w-x-320H seria 64 linhas de 60 caracteres.)

  3. Calcule o valor médio de escala de cinza de cada bloco de pixels.

  4. Para cada bloco de pixels, selecione um personagem cujo valor de escala de cinza (do passo 1) é uma boa aproximação da média bloco de pixels (a partir do passo 3).

Essa é a forma mais simples do exercício. Uma versão mais sofisticada também levará o real formas dos personagens em conta quando quebrar os laços entre os candidatos para um bloco de pixel. Por exemplo, uma "barra" (/) seria uma escolha melhor do que uma "barra invertida" (\) para um bloco de pixels que parece ter uma característica contraste da esquerda para a superior direito-inferior.

Outras dicas

aalib (último lançamento em 2001) é uma biblioteca de arte open source ASCII que é usado em aplicações como o MPlayer. Você pode querer verificar o seu código fonte para ver como ele faz isso. Fora isso, desta página descreve com mais detalhes sobre como esses algoritmos de trabalho.

Além disso, você pode dar uma olhada em libcaca (última versão de 2014), que monitores segundo a seu site tem as seguintes melhorias ao longo aalib:

  • Suporte Unicode
  • 2048 cores disponíveis (alguns dispositivos podem onlyhandle 16)
  • pontilhamento de imagens coloridas
  • operações avançadas de lona de texto (blitting, rotações)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top