這是之前修課時寫的一個「馬賽克」影像程式~ 不過那時AS3尚未問世~ 我想用AS3重新寫過的話~ 處理速度應該會增進不少~ 留待以後再做試驗~
Mosaic
import flash.display.BitmapData; function setImage(para:Number):Void { var myBitmapData:BitmapData = BitmapData.loadBitmap("lena"); var height:Number = myBitmapData.height; var width:Number = myBitmapData.width; //declare a two-dimensional array var rgb:Array = new Array(width); for(var j:Number = 0 ; j < height ; j++) rgb[j] = new Array(height); //get pixel value to rgb array for(var i:Number = 0 ; i < width ; i++) { for(var j:Number = 0 ; j < height ; j++) { rgb[i][j] = myBitmapData.getPixel(i,j); } } var checkedsize = (para < 1) ? 1 : para; //get index pixel value to temp array var temp:Array = new Array(); for(var i:Number = 0 ; i < width ; i+=checkedsize) { for(var j:Number = 0 ; j < height ; j++) { if(i % checkedsize == 0 && j % checkedsize == 0) { temp[temp.length] = rgb[i][j]; } } } //set index pixel value to rgb array var tmp:Number = 0; for(var i:Number = 0 ; i < width ; i+=checkedsize) { for(var j:Number = 0 ; j < height ; j++) { if(i % checkedsize == 0 && j % checkedsize == 0) { for(var m:Number = 0 ; m < checkedsize ; m++) { for(var n:Number = 0 ; n < checkedsize ; n++) { rgb[i+m][j+n]=temp[tmp]; } } tmp++; } } } //set pixel value for(var i:Number = 0 ; i < width ; i++) { for(var j:Number = 0 ; j < height ; j++) { myBitmapData.setPixel(i,j,rgb[i][j]); } } var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc.attachBitmap(myBitmapData,this.getNextHighestDepth()); } setImage(20);