/ Published in: ActionScript 3
Credit for this goes to Terry Paton
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
package com.terrypaton.effect { import flash.display.* import flash.geom.Matrix; public class PixelateBitmap { public function PixelateBitmap ():void { _instance = this } public function setup (_bitmapData:BitmapData):void { _bmpData = _bitmapData } public function process (_source:BitmapData,amount:Number):void { var scaleFactor:Number = 1 / amount var bmpX:int = scaleFactor*_bmpData.width var bmpY:int = scaleFactor * _bmpData.height if (bmpX < 1) { bmpX = 10 } if (bmpY < 1) { bmpY = 10 } // scale image down _pixelateMatrix.identity () _pixelateMatrix.scale (scaleFactor, scaleFactor) try { var _tempBmpData:BitmapData = new BitmapData (bmpX,bmpY,false,0xFF0000) }catch (e:Error) { trace("bmpX = "+bmpX) trace("bmpY = "+bmpY) } _tempBmpData.draw (_source, _pixelateMatrix) // now scale it back _pixelateMatrix.identity () _pixelateMatrix.scale (amount, amount) _bmpData.draw(_tempBmpData,_pixelateMatrix) } public var _pixelateMatrix:Matrix = new Matrix() public var _bmpData:BitmapData public static function getInstance():PixelateBitmap { return _instance } public static var _instance:PixelateBitmap } } // Usage Example // // import com.terrypaton.effect.PixelateBitmap; // // var myBitmapData:BitmapData = new myImage(320,240); // myImage is a bitmap in the library with Export for ActionScript set // var myPixelatedBitmapData:BitmapData = new BitmapData(myBitmapData.width,myBitmapData.height); // var myBitmap:Bitmap = new Bitmap(myPixelatedBitmapData); // var pixelateBitmap:PixelateBitmap = new PixelateBitmap(); // pixelateBitmap.setup(myPixelatedBitmapData); // // addChild(myBitmap); // // addEventListener(Event.ENTER_FRAME, loop); // function loop(event:Event):void { // var amount:Number = 320 / mouseX; // if (amount > 0) { // pixelateBitmap.process(myBitmapData, amount); // } // }
URL: http://www.terrypaton.com/as3-pixelate-bitmapdata/