"Encore un truc qui sert a rien a part bouffer les ressources !"
et oui, mais avec panache !

voila qui va meme révolutionner l'art de bouffer toutes les ressources :) bon, de base c'est un script qui va prélever la couleur de chaque point, en déduire une valeur( (rvb/seuil3)/3) et y faire correspondre un grapheme, ou une forme vectorielle ou juste un pixel ou juste l'output string.

au choix.
J'ai essayé de faire user friendly mais j'y arrive moyen. En meme temps c'est pas hyper compliqué:

var t:Typographeur = new Typographeur();
t.fromBitmap(  
               bmpd:BitmapData, 
               scaleSource:Number = 1, 
               scaleDestination:Number = 1, 
               fontMini:Number = 0, 
               fontMaxi:Number = 0, 
               refresh:Boolean = false
             );
ou bmpd est le bitmapdata original (pas de transparence, ce serait pas grand chose a changer mais j'ai la flemme).
scaleSource sert a réduire ou agrandir (plutot réduire) l'original
scaleDestination sert a réduire ou agrandir (plutot agrandir) la source
fontMini est la taille mini du grapheme ou de la forme vectorielle et fontMaxi sa taille maximum.
refresh est une Booléenne qui sert a réinitialiser les BitmapDatas. dispo seulement sur la méthode t.fromBitmap() sachant que la méthode t.fromFile( url:String , [params]); délegue la création des bitmaps, ils sont réinitialisés de toutes facons.
voila pour la base

Il y a 4 modes de rendu via la variable t.type:String

  • pixel - dessine un pixel : pratique pour caler les scales et tres rapide a rendre
  • text - l'objet du truc : balance un caractere dont la densité graphique se rapporte a la valeur du pixel
  • box - va dessiner un rectangle
  • dot - va dessiner un cercle
je sais, je sais, type est un mot réservé... je sais c'est mal.

Apres j'ai fait un mode monochrome -> t.monochrome false par défaut.
on peut assigner la valeur de premier plan et d'arriere plan avec les variables t.couleur et t.background qui auraient du etre nommées intelligemment foregroundColor et backgroundColor mais la aussi...
une autre variable importante c'est le threshold( seuil ) t.threshold = 256 par défaut qui est le diviseur utilisé pour obtenir la valeur des couleurs.
plus il est élevé, plus les couleurs deviennent claires. En dessous de 256, on reste dans des valeurs sombres.

une derniere pour la route, la méthode t.flipValues() qui permet d'inverser le tableau des graphemes utilisés en mode text du coup les graphemes denses représetent les couleurs claires et inversement (a tester).

Un exemple valant souvent mieux que de longs discours:


vas y mollo sur l'échelle de la source, pas au dessus de 1 en ligne, l'échelle de destination parcontre tu peux y aller sachant que si c'est trop grand le bitmap créé sera invalide (si >2880*2800). Tout le reste c'est bon.
un coup le zip : Typographeur.zip il se peut que le FLA ne marche pas vu que j'ai fait des modifs dans la classe depuis ce matin mais je compte sur ton intelligence pour reparer mes conneries :)


ca donne des trucs chouettes assez vite regarde :

une icone bielorusse (...?) : http://www.belarus.vneshintourist.net/?p=60&more=1&c=1


cette image comme la plupart de celles utilisées dans le .FLA proviennent du meilleur blog d'images du monde entier http://www.darkroastedblend.com/ celle ci vient du billet du jour : http://www.darkroastedblend.com/2007/11/glamorous-insects.html sans modération !


bodybuilder russe original par John Day (tres chouette boulot photo): http://www.behance.net/JonDay

tu peux en voir d'autres ici : la suite

cool hein ?!
j'ai meme essayé de les animer, bon, ca fait du 3 images secondes mais c'est envisageable sur des micro - micro - formats(24*16).
sachant que derriere on a une tres grande richesse graphique du fait de la complexité des graphemes et la mise a l'échelle qui permet de multiplier le format.
Ce qui me plait beaucoup dans ce truc, c'est l'économie de moyens une image de 2Ko qui est exploitée a fond et qui produit 200Ko d'image de bonne qualité : j'adore :)
pour aller plus loin, il serait intéressant de trier des plages de valeurs et traiter les plus claires en premier, comme en peinture, pour éviter des artefacts dus a la lecture linéaire de l'image: si une ligne blanche suit une ligne noire, la ligne blanche va recouvrir la ligne noire. ca n'arriverait pas si tous les blancs étaient traités d'un coup, puis les gris, puis les noirs. On peut aussi jouer avec l'alpha. Il faudrait un truc pour inverser la valeur aussi ... enfin plein de trucs.

... mais bien sur que ca sert a rien ! ...bien sur...
Si en fait quand j'ai fait crea, j'avais super pas d'dee d'animation donc je me suis dit que l'important c'etait la maniere de traiter le sujet ('flash super heros') et donc j'avais code un truc du genre de maniere extremement pumk pour finir dans les temps. Ca donnait ca : http://www.nicoptere.net/crea07/heros.html
Donc en fait ca sert a gagner les concours CREA... autant dire que ca sert bien :D