Negation d'une image bitmap (flash 8 beta)

Soyez le premier à donner votre avis sur cette source.

Vue 15 874 fois - Téléchargée 1 007 fois

Description

Voila un petit exemple suite à la source déposée concernant flash player 8 et sa gestion des pixels.

Rappellons que le player est dispo gratuitement ici : http://www.macromedia.com/software/flashplayer/public_beta/

Seules les anims en swf luent sous internet explorer marcheront avec la version 8.
(pas si vous lancer le swf directement)

Cette source est simple et explique comment utiliser les principaux atouts de la classe bitmap.

Source / Exemple :


pas besoin de source, c'est tout simple :

créer un clip avec une image dedans,
placer le sur la scene principale,
nommer le photo (nom du clip).

puis insérer ce code dans l'image 1 :

stop();
//on cré un nouvel objet bitmap de taille 320*240
//(en ce qui concerne le "true" j'ai pas encore trouver pq il est la.
bmp_in = new flash.display.BitmapData(320, 240, true);
//draw est une methode qui ecrit les pixels qu'il voit sur photo dans bmp_in
bmp_in.draw(photo);
//ma variable d'increment global pour la hauteur de l'image.
var y = 0;
//la fonction qui renvoie le negatif des pixels.
function negativ() {
	//pour chaque ligne...
	for (var x = 0; x<=320; x++) {
		//... on chope la couleur du pixel sur l'image...
		c = bmp_in.getPixel(x, y);
		//... on calcul sa négation et on la renvoie dans l'image.
		bmp_in.setPixel(x, y, rvb2rgb(0xFFFFFF-c));
	}
	//on rafraichit les pixels, à cet appel, tout les pixels changé dans l'objet bmp_in s'affiche.
	_root.photo.attachBitmap(bmp_in, 1);
	//on incremente la variable global
	y++;
	//si la hauteur en cours dépasse la hauteur de l'image...
	if (y>240) {
		//... on arrete le timer.
		clearInterval(timer);
	}
}
//petite fonction qui convertie une valeur rvb : 0xFF0000 pour du rouge
//en une valeur pour setpixel. (pq set pixel est comme ça? j'en sais rien...
function rvb2rgb(rvb) {
	//petit calcul bidon...
	return (0xFFFFFF-rvb)*-1;
}
//on trace les lignes de pixels de 0 à 240 à interval régulier.
var timer = setInterval(negativ, 1);

Conclusion :


telecharger le, puis bouton droit de la souris sur le swf -> ouvrir avec -> internet explorer (ou votre navigateur préféré)
ou lancer le .html (tout ça une fois le player 8 telechargé et installé evidement).

Codes Sources

A voir également

Ajouter un commentaire Commentaires
softghost Messages postés 61 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 13 avril 2010
1 sept. 2009 à 14:41
Bonjour,
en parlant de flash et de la fonction bitmap. j'aimerais bien capturer une image a partir d'une cam j'utilise ,

Camera.get();

bonne journée.
manoloz Messages postés 26 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 27 septembre 2006
16 août 2005 à 18:15
Flash qui gère les pixels??
trop fort, il va y'avoir de la concurrence avec after effects!
kingcobra Messages postés 316 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 19 septembre 2012
16 août 2005 à 16:50
ok merci ça assure je comprenais vraiment pas et en plus pour trouver de la doc sur ces nouvelles fonctions c'est pas super simple...
J'ai remarqué qu'aprés que la fonction était fausse, et l'ai modifié. Mais bon on va opter pour les guillemets ;) .
Prouprou_Sensei Messages postés 517 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 24 octobre 2006 1
15 août 2005 à 12:46
Le true est un booleen qui dit si il y a de la transparence dans le bitmap.
Ta fonction rvb2rgb est inutile et surtout fausse le resultat.

bmp_in.setPixel(x, y, "0xFFFFFF"-c);
ou
bmp_in.setPixel32(x, y, "0xFFFFFFFF"-c); (pour gerer l'alpha plus tard ;))

Les guillemets suffisent :)

Merci pour ta source.
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
13 août 2005 à 02:56
...ça va permettre de développer la détection de mouvement dans Flash ça, non? A partir d'une série de photos, d'une source vidéo, webcam?

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.