Pour les fan de gros pixels voici un effet qui transforme n’importe quelle image ou vidéo en image pixelisée ! Utile aussi pour faire des transitions…
J’utilise des bitmapData, des rectangles, un peu de fillRect et de getPixel et le tour est joué !
Une seule fonction s’occupe de l’effet, vous pouvez l’utiliser sur les displayObject.
Vous pouvez tester l’effet pixel sur un flux vidéo d’une webcam.
Pour les sources c’est ici.
La fonction de l’effet pixel :
function pixelate(pContent:DisplayObject, pPixelSize:uint):Bitmap { var i:uint, j:uint = 0; var s:uint = pPixelSize; var d:DisplayObject = pContent; var w:uint = d.width; var h:uint = d.height; //on crée un BitmapData de la source var bmpDataSrc:BitmapData = new BitmapData(w, h); bmpDataSrc.draw(d); //on crée un BitmapData pour créer le bitmap final var bmpDataPx:BitmapData = new BitmapData(w, h); //on crée un rectangle de la taille du nouveau pixel var rec:Rectangle = new Rectangle(); rec.width = rec.height = s; //on boucle sur la hauteur et largeur de la source //en fonction de la taille du nouveau pixel for (i = 0; i < w; i += s) { for (j = 0; j < h; j += s) { rec.x = i; rec.y = j; bmpDataPx.fillRect(rec, bmpDataSrc.getPixel32(i, j)); } } //on supprime le bitmapData source bmpDataSrc.dispose(); bmpDataSrc = null; return new Bitmap(bmpDataPx); }
