ColorReduction #2 - le retour de la revanche du fils du cousin de la grand-mère
Le lundi 14 juillet 2008 à 17:20 :: Flash-AS3 :: #44 :: rss :: 3007 lectures
bon, ben on avait bien rigolé sur le premier(ColorReduction), là on va carrément se fendre la poire en deux comme dirait X-Or.
et à mon avis à la fin du billet, le méchant sera toujours pas mort.
sur le dernier coup il y avait des trucs pas trop cool qui se produisaient avec certaines valeurs ( genre 128 ).
Là j'ai repris à la base. au début je suis parti sur du threshold plutôt que des palettemaps. ça faisait gagner pas mal de temps de traitement mais ça me plaisiat pas trop, ça continuait de nécessiter la création de 3 BitmapDatas avec gras de rafraîchissement.
En fait c'était assez rapide sur des grosses réduction mais pour couper le nombre de couleurs par deux, il fallait 127 thresholds par couche ce qui est mal.
Donc après cette tentative franchement ratée et inspiré par le commentaire de faby sur l'autre billet, je me suis décidé à passer par les pixels.
alors que ce soit dit :
le ByeArray c'est nul pour le traitement massif de pixels.
dissons que c'est 70% plus lent.
bon, ça c'est fait.
du coup je fais juste un getPixel, une réduction mathématique, et un setPixel.
alors le temps de traitement est plus élevé qu'un traitement par couches parcontre il est constant et le résultat est nickel.
paf démo:
je les ai pas comptées et je suis pas assez intelligent pour faire un vrai script de professionnel qui tue, qui plus est ça ne m'intéresse pas.
de gauche à droite et de haut en bas:
- le BitmapData original qui sert pour les tests après
- ReduceColors.toCGA( original ) : +/- 8 couleurs (là on peut les compter donc ça va ^^)
- ReduceColors.toEGA( original ) : +/- 64 couleurs
- ReduceColors.toVGA( original ) : +/- 256 couleurs
- ReduceColors.toHAM( original ) : +/- 4096 couleurs
- ReduceColors.toSVGA( original ) : +/- 65536 couleurs
ReduceColors.toQuelqueChose( original:BitmapData, grayscale:Boolean, alpha:Boolean )où original est le BitmapDAta à traiter, grayscale une booléenne qui dit si la sortie se fait en noir et blanc ou pas et alpha pour dire si le seuilage s'applique à la couche alpha ou pas.
Soit tu es courageux ou suicidaire et tu tapes :
ReduceColors.reduceColors( original:BitmapData, number:int, grayscale:Boolean, alpha:Boolean )où on a un paramètre number qui est le nombre de seuils qui vont être fabriqués pour chaque couleur entre 0 et 255.
par exemple de base les couleurs vont de 0 à 255 en s'ncrémentant de 1 et ben ce qui se passe c'est qu'on rabat les couleurs vers le seuil le plus proche qui sera un multiple de (255/number+2).
le +2 pour conserver le noir et le blanc.
D'ailleurs c'est là que le bât blesse, le tableau d'indexation des seuils est pas top et ça marche mais j'ai pas confiance (le méchant n'est toujours pas mort).
EDIT de 22h:
et puisque c'est l a fête du slip, je te mets une appli complètement interactive ou tu pourras voir comment ça marche la méthode reduceColors();
et son petit fla: reduceColors.fla
comme dirait Wilfrid : VIVE LES EXOSQUELETTES ! :D l'image vient de là : http://www.photopumpkin.com/photo-blog/macro-insects/ ( j'avais jamais vu un blog avec des pubs aussi intrusives 0_o )
voila tout mon vieux Milou,
à bientôt pour de nouvelles aventures !
copains
Commentaires
1. Le lundi 14 juillet 2008 à 20:41, par Wilfrid
2. Le mardi 15 juillet 2008 à 00:26, par nicoptere
3. Le mardi 15 juillet 2008 à 02:18, par tlecoz
4. Le vendredi 18 juillet 2008 à 11:27, par Zed-K
5. Le vendredi 18 juillet 2008 à 12:54, par nicoptere
6. Le jeudi 28 août 2008 à 21:33, par dada
7. Le vendredi 29 août 2008 à 09:17, par nicoptere
8. Le vendredi 29 août 2008 à 14:07, par dada
Ajouter un commentaire