Ce petit programme (assez peu utile mais plutôt ludique) permet la conversion d'une image en texte.
Le principe est simple, au chargement, il pré calcule la luminosité de tous les caractères de bases (ASCII 33 à 255) puis les classe par ordre croissant.
Ensuite, il scanne l'image et estime la luminosité de chaque pixel (conversion en noir et blanc) afin de pouvoir piocher une lettre du tableau.
Enfin, il copie le tout dans le presse papier.
La source présente quelques points sympa.
D'abord, elle n'utilise pas qu'un jeux réduit de caractère mais estime la luminosité de tous les caractères possibles. Elle permet donc des dégradé plus fluide.
De plus, elle utilise un Bitmap.LockBits ce qui accélère nettement le traitement.
Conclusion :
En codant ce programme, j'ai découvert qu'il y a une différence énorme entre :
String MaChaine = "";
for... MaChaine += "abcd"
et StringBuilder.Append(...)
Le StringBuilder est plus rapide de l'ordre de 200 % sur les (très) grosse boucle !
Fait attention dorénavant !
PS : Ouvrer le texte avec notepad++ pour les grandes images.
4 sept. 2009 à 16:22
Quant à la ré-utilisabilité, je vois mal un utilisateur reprendre ce code autre que pour un projet qui n'a que ce but, i.e de générer des ASCII Arts. S'il le fait, je pense qu'encapsuler 4 méthodes et une structure ne lui prendra pas l'aprèm'. Si j'avais mis tout mon code dans le main, je dis pas mais là, chaque fonction a un rôle bien définit et clair, ce qui suffit amplement à en faire un code aux différentes parties ré-utilisables.
4 sept. 2009 à 13:36
4 sept. 2009 à 13:03
Pourquoi tu partages ton code sur codes-sources (de plus, comme tu le précises, un programme qui ne servira probablement pas à grand chose sauf à s'amuser un peu) ? Ben pour qu'on puisse voir comment ça marche dedans... (pas besoin de nous fourguer ton code sinon, l'exe est suffisant, non?). D'ailleurs, déjà dispo sur codes-sources:
http://tools.codes-sources.com/asciiArt.aspx
Alors si tu partages le code (ce qui est très appréciable), la moindre des choses c'est de faire quelque chose qui tient un peu la route... Dire qu'on se fiche de la réutilisabilité c'est quand même bien marrant voire même le comble pour un site d'échange comme codes-sources ou le but est justement de partager le travail avec les autres (dans l'optique, entre autres, qu'ils puissent réutiliser ce qu'on a fait).
Bref, hormis mettre en doute les capacités du programmeur, je ne vois pas comment on peu défendre une position comme la tienne. Absurde.
4 sept. 2009 à 12:50
Pour l'article, il est bien marrant et très vrai !
++
4 sept. 2009 à 12:45
Concernant StringBuilder, voire ce (vieux) poste de blog de coq: http://blogs.developpeur.org/coq/archive/2007/07/28/un-bon-moyen-de-se-souvenir-de-l-ami-stringbuilder.aspx
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.