Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLM'S ASCII ART


Information sur la source

Catégorie :Graphique Classé sous : ascii, art, image, convertir, conversion Niveau : Initié Date de création : 23/06/2006 Date de mise à jour : 27/06/2006 08:05:34 Vu / téléchargé: 7 473 / 736

Note :
9,86 / 10 - par 7 personnes
9,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Après un bon moment sans poster, je reviens avec ce petit prog.

Ce n'est pas le programme de l'annèe mais le rendu est pas mal (je trouve).

Donc cette source sert à faire de l'ASCII Art. C'est une maniére de redessiner une image avec des caractères ASCII. Il existe sur le site des sources qui colorent une page HTML remplie de "#" (par exemple) en fonction des couleurs d'une image. Mais ici, c'est différent.

La technique consiste à couper notre image en petits rectangles et à voir si on ne "dépasse" pas en appliquant un caractère sur un des rectangles. Alors je sais ça ne paraît pas clair du tout mais regardez la capture pour vous faire une idée.

Le programme "décode" des images uniquement en noir et blanc. J'ai donc rajouté une petite fonction de conversion pour pouvoir charger une image en couleur et la convertir.

Le traitement est très rapide en compilé car il utilise les API graphiques (merci à Renfield pour ses conseils!!!). Le résultat sera meilleur avec une petite taille de police mais il ne faut pas oublier que la taille par défaut de la police du Bloc-Note de Windows est de 10.

A vos commentaires...

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

23 juin 2006 17:27:15 :
Nouvelle capture
24 juin 2006 14:31:12 :
Choix de la taille de la police
24 juin 2006 15:03:44 :
Encore une nouvelle capture
24 juin 2006 16:59:32 :
Code plus rapide, changement dans l'interface
25 juin 2006 14:51:59 :
...
25 juin 2006 20:48:48 :
Modif fonction de conversion
26 juin 2006 05:19:31 :
Ajout d'exemples
26 juin 2006 18:26:43 :
Traitement revu et corrigé (merci a Renfield)
26 juin 2006 21:20:18 :
J'ai revu complètement l'algo, en compilé c'est quasi instantanné!!!!
26 juin 2006 21:31:28 :
...
26 juin 2006 21:49:49 :
J'ai changé encore deux trois petites choses
26 juin 2006 22:08:51 :
Fonction de conversion inclus dans le traitement
26 juin 2006 23:20:29 :
Amélioration de l'algo
27 juin 2006 00:20:01 :
Accélération de l'algo. Lancez le prog en compilé, ça ira plus vite.
27 juin 2006 03:00:34 :
...
27 juin 2006 06:55:04 :
Nouvelle interface graphique
27 juin 2006 07:19:29 :
Modifications soufflées par Renfield
27 juin 2006 07:37:24 :
Ajout de la barre d'état et suppression du MsgBox de copie
27 juin 2006 08:02:52 :
Ajout des très petites tailles de police
27 juin 2006 08:05:34 :
...

Commentaires et avis

signaler à un administrateur
Commentaire de windob le 23/06/2006 23:32:27

J'ai pas encore regardé le code mais le rendu sur la capture est vraiment réussi ! Bravo

signaler à un administrateur
Commentaire de MadM@tt le 24/06/2006 02:21:58

C'est vrai que ça rend joli ;-)

signaler à un administrateur
Commentaire de seb5629 le 24/06/2006 18:23:46

il est vraiment super ce code!!!

signaler à un administrateur
Commentaire de Renfield le 26/06/2006 10:25:35 administrateur CS

y'a quelques astuces simple a mettre en oeuvre, our accelerer la chose...

faire un :
   SetBkMode picSource.hdc, OPAQUE
   SetBkMode picDiff.hdc, OPAQUE

au début, par exemple (le fond du texte sera opaque, plus besoin d'effacer la zone avant un Print)

utiliser TextOut picDiff.hdc, 0, 0, ChrW$(lCompteur), 1
plutot que Print  (faire un .Refresh por visualiser)

PicZone ne sert a rien...
BitBlt picDiff.hdc, 0, 0, lWidth, lHeight, picSource.hdc, lX, lY, vbSrcInvert
suffit

évite aussi les multiples allocations de sChaines (lors des concaténations)
utilises un tableau, ou définit la taille de sChaine au début :

sChaine = Space$((2 + CInt(0.5 + picSource.Width / lWidth)) * CInt(0.5 + picSource.Height / lHeight))

ensuite :
         nIndex = nIndex + 1
         Mid$(sChaine, nIndex) = ChrW$(lChoix)

signaler à un administrateur
Commentaire de clementio le 26/06/2006 18:28:49 administrateur CS

Je viens de mettre à jour avec les suggestions de Renfield.

Ca complique un peu le code mais le traitement est environ 3 à 4 fois plus rapide!!!!

C'est trop cool, merci à toi Renfield...

signaler à un administrateur
Commentaire de clementio le 26/06/2006 23:22:02 administrateur CS

J'ai encore accélérer l'algo de traitement!!!

C'est incroyable la différence avec le début. Je pense que maintenant il sera difficile de faire plus rapide...

signaler à un administrateur
Commentaire de Renfield le 27/06/2006 06:35:41 administrateur CS

en stockant ton tableau ainsi :
ReDim tBitCar(lWidth - 1, lHeight - 1, 32 To 255)

tu pourras faire :
   'On remplit tBitCar en bouclant sur les caratères entre 32 et 255
   For lCompteur = 32 To 255
      'On écrit le caractère sur l'image buffer
      TextOut picBuff.hdc, 0, 0, ChrW$(lCompteur), 1
      'On copie la valeur des pixels dans tBitImage
      GetDIBits picBuff.hdc, picBuff.Image, 0, lHeight, tBitCar(0, 0, lCompteur), bi32BitInfo, DIB_RGB_COLORS
   Next

signaler à un administrateur
Commentaire de Renfield le 27/06/2006 06:55:03 administrateur CS

belle accéleration ^^

lors de la conversion NB, tu pourrais t'epargner quelques couteuses lectures de tableau, couteuses en VB :

         For lY2 = 0 To lHeight - 1
            For lX2 = 0 To lWidth - 1
                lVal = tBitImage(lX2, lY2)
               lVal = (lVal Mod &HFF) + ((lVal \ &HFF) Mod &HFF) + ((lVal \ &H10000))
              

(à noter que j'ai fait : lSeuil = Slider1.Value * 3)

signaler à un administrateur
Commentaire de clementio le 27/06/2006 07:21:29 administrateur CS

La formule exacte est:

lVal = (lVal Mod &H100) + ((lVal \ &H100) Mod &H100) + (lVal \ &H10000)

Merci encore pour ces conseils...

J'ai mis la source à jour et modifié l'interface pour que ça fasse un peu plus "professionnel".

signaler à un administrateur
Commentaire de _DoOmy_ le 01/08/2006 17:33:51

Monstrueux, ça marche avec toutes les images?

signaler à un administrateur
Commentaire de Renfield le 01/08/2006 17:44:56 administrateur CS

et oui ^^

signaler à un administrateur
Commentaire de ym_trainz le 28/09/2008 21:44:47 10/10

Bravo Clementio !
Encore une super source !

J'ai juste rajouté un genre de ProgressBar car j'aime savoir où on en est... :

Dans form1 / Lancer , dans la boucle :

For lX = 0 To lSrcWidth Step lWidth
         '*************
         Counter = Counter + 1 'Counter en long
         If Counter = 8000 Then
           Counter = 0
           tlb.Buttons(8).Caption = CStr(Int(100 * CStr(lY) / lSrcHeight)) + " %"
           DoEvents
         End If
         '***************

Evidemment, en fin de procédure, tlb.Buttons(8).Caption = "Exécuter"

Encore merci !

Cordialement,
ym_trainz

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Conversion String a Byte [ par shadow1779 ] Bonjour, j'essaye de faire un petit programme utilisant les sockets, pour l'envoi je fais ceci afin de convertir un string en byte... mais comment con [.net2 & image] Image dans un xml [ par Lucyberad ] Bonjour a tous,je fais un petit programme qui sauvegarde des données au format xml,et j'aimerais inclure des image dans ce xml.en gros je me dema Convertir une valeur en code ASCII [ par tchouck ] bonjour, je voudrais decoder un fichier et pour cela j'ai besoin reconvertir la valeur des caractères en leurs valeurs ASCII .Ex A=65 (&#231 conversion Hex avec condition [ par ryback08 ] BonjourPour un projet d'etudiant, je doit traiter une base de donnée avec excel.Cette base doit etre converti en trame ASCII oui Hexa suivant un convertir tableau en image [ par survcopt ] Je possede un tableau qui contient des données de hauteur et je desire les convertir en image quelqu'un aurait-il une idée en vbnet Merci Conversion tables ASCII [ par juju8684 ] Bonjour à tous,je fais appel à vos connnaissance pour résoudre un problème que j'ai depuis environ 1 mois et auquel je n'ai toujours aucune solution : Convertir un TEXBOX en Image [ par vapo ] Bonjour, Je souhaite convertir un TextBox en Image, BMP, JPEG ou autres. Pour le moment je souhaite soit convertir son contenu (font compris) vers un Convertir image ( le systeme) [ par xcxl ] Quelqn sait comment marche les convertisseur d'image (jeparle du systeme) parce que jai penser a develloper un convertisseur qui ouvre le fichier, rec Conversion d'un Entier en ASCII avec le langage Basic [ par gon_ak ] Bonjour à tous! J'ai un petit problème, j'ai pu trouver certains codes permettant d'effectuer des conversions mais aucun ne répond à mes besoins étan Convertir un Objet VB en Fichier Image [ par agara ] Salut à tous. G recherche le moyen de convertir un graphique (MSCHART) en fichier image... Quelqu'un peut-il m'aider?


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.