Il existe de jolis sites de conversion gratuits "image vers ASCII art" comme celui-ci: ASCII-art.org
Comment fonctionne un tel algorithme de conversion d'image?
, . 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 # @WWWWWWWWWWWWWWWWWWW. WW WWWWWWWWWWWWWWWWWWW WW WWWWWWWWWWWWWWWW. .WWWWWWWWWWWWWWWWWWWWW WW @ WWWWWWWWWWWWWWWWW. : WWWWWWWWWWWWWWWWWWWWWWWWW: @ WWWWWWWW @ WWW. 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 @@@ @@@@@@@:
Le concept à grande échelle est simple:
Chaque caractère imprimable peut se voir attribuer une valeur d'échelle de gris approximative; le signe "at" @
est visuellement plus sombre que le signe "plus" +
, par exemple. L'effet variera selon la police et l'espacement réellement utilisés.
En fonction des proportions de la police choisie, regroupez l'image d'entrée en blocs de pixels rectangulaires de largeur et de hauteur constantes (par exemple, un rectangle de 4 pixels de large et 5 pixels de haut). Chacun de ces blocs deviendra un caractère dans la sortie. (En utilisant les blocs de pixels mentionnés ci-dessus, une image 240w-x-320h deviendrait 64 lignes de 60 caractères.)
Calculez la valeur d'échelle de gris moyenne de chaque bloc de pixels.
Pour chaque bloc de pixels, sélectionnez un caractère dont la valeur d'échelle de gris (de l'étape 1) est une bonne approximation de la moyenne du bloc de pixels (de l'étape 3).
C'est la forme la plus simple de l'exercice. Une version plus sophistiquée prendra également en compte les formes réels des caractères lors de la rupture des liens entre les candidats pour un bloc de pixels. Par exemple, une "barre oblique" (/
) serait un meilleur choix qu'une "barre oblique inverse" (\
) pour un bloc de pixels qui semble avoir une fonction de contraste de bas à gauche en haut à droite.
aalib (dernière version en 2001) est une bibliothèque d'art open source ASCII art utilisée dans des applications comme mplayer. Vous voudrez peut-être consulter son code source pour voir comment il À part cela, cette page décrit plus en détail le fonctionnement de ces algorithmes.
Vous pouvez également jeter un œil à libcaca
(dernière version 2014), qui selon leur site Web présente les améliorations suivantes par rapport à aalib
:
J'ai trouvé cette article CodeProject écrit par Daniel Fisher contenant une simple implémentation C # d'une image en ASCII conversion artistique algorithme.
Voici les étapes du programme/bibliothèque:
C'est assez simple, non?
BTW: Dans les commentaires de l'article, j'ai trouvé cette implémentation cool AJAX : Gaia Ajax ASCII Art Generator :
[...] Je me sentais obligé de démontrer que cela pouvait facilement être fait dans un ensemble normalisé de technologies Web. J'ai cherché à voir si je pouvais trouver des bibliothèques à utiliser, et j'ai trouvé l'article de projet de code de Sau Fan Lee sur sa bibliothèque .NET ASCII.
P.S .: Lucas (voir commentaires) en a trouvé un autre article CodeProject .