Ascii'o'matic - L'ASCII Art online !

L'ascii art, c koi ? Pour commencer, quelques exemples de ce qui se trouve sur le net chris.com ou alors une simple recherche sur google.

Cliquez ici pour tester le script en ligne.

Bon, bref, (en gros) comment ça marche ? Simple ! On utilise la table de caratères disponible pour construire un dessin ou une image avec. En général on utilise une police de caractères "de taille fixe" comme la police "system" sous une commande ms-dos ou la police "courier". En l'occurence on utilisera la police "courier".

Principe de base, prenons 4 caractères différents (au pif quoi), et regardons les à la loupe ! voila le résultat :

ascii01.jpg

Magnifique culture de pixel ! Bon, a première vue, on observe que le caractère "B" est plus foncé que le "c" (non c pas un effet d'optique à la con à cause des couleurs !). Pour le prouver comptez les pixels représentant le caractère "B" et le caractère "c" (les pixels noirs en fait).... alors ? .... 26 pour le "B" et 12 pour le "c". Bon ! On en déduit alors que "plus ya de pixels, plus c sombre, moins ya de pixel plus c clair !" (c clair ?). Dans ce cas on peut représenter les contrastes d'une image uniquement avec des caractères ! C'est le principe de base de l'ascii art ! Facile non ?

Généralement, (et je dis bien généralement) on trouve sur le net des fichiers ascii art et mode texte lisibles sous bloc-note ou autre éditeur. Bref du monochrome. L'outil présenté ici, permet également de travailler en couleur sur des pages html en utilisant des balises "font" pour définir la couleur.

Passons à la technique, vous avez certainement testé l'appli donc je passe à la suite. On entre paramètre : une image, un mapping (série de caractères ascii) et un niveau de qualité.

Le script PHP prend l'image et la passe dans un outil nommé "convert". Ce magnifique outil de la série ImageMagick permet de convertir une image de format x vers un format y, je vous passe les détails, allez donc voir sur le site. Cette image envoyée par vous même est redimensionnée dans une résolution de 100 pixels par 100 (car c'est suffisant) puis convertie au format RGB. Une fois ce traitement effectué, le script charge l'image RGB et effectue une moyenne des 3 composantes de couleurs pour obtenir une image en niveaux de gris. Les niveaux de gris vont être calqué sur le mapping ascii pour obtenir les contrastes ensuite le caractère ascii ainsi déduit sera coloré selon la valeur les composantes RGB. Pour optimiser le résultat final, le script effectue un décalage bit à bit sur chaque composante RGB et diminue ainsi le nombre de couleurs.

ascii02.gif

Simple non ? Si vous avez des questions, n'hésitez pas à déposer un commentaire dans le formulaire en bas de page.

Fichier attachéTaille
asciiomatic.zip6.54 Ko