as3學習筆記之ConvolutionFilter濾鏡

      濾鏡這個東西貌似很複雜,一時半會搞不明白,先記下搞明白的部分。ConvolutionFilter 是一個矩陣盤繞濾鏡。(爲什麼叫盤繞我也不知道,估計就是周邊像素混合運算的意思。)這個濾鏡其實不是AS3的新東西,flash8的時候就有了。只不過,AS3裏功能更強大點。(不過強大的功能我還不會),它的效果類似photoshop裏的自定義濾鏡。所以要做不同效果的話在photoshop裏調好效果,然後把數值抄過來似乎是比較高效的方法。

下面是代碼:

//pic是庫裏的一張圖片,不過這裏有個沒明白的事情:
//把圖片設爲“類”之後,構建這個p1的時候提示需要兩個參數,而這兩個參數的值我不知道有什麼用。
var p1:pic=new pic(0,0);
//創建一個BitmapData對象,一會用他測試濾鏡。
//也不是一定要BitmapData對象纔可以用濾鏡,對於所有顯示對象都可以使用filters屬性來應用濾鏡。
var bmd:BitmapData=new BitmapData(500, 375);
//將p1繪製到bmdbmd裏
bmd.draw(p1);
//矩陣的兩個維度
var matrixX:Number = 3;
var matrixY:Number = 3;
//轉換矩陣,數組長度必須是上面的matrixX和matrixY的乘積,
//這裏代表就是個3×3的九宮格。這裏的值產生的效果是“浮雕”
var matrix:Array = new Array(-2,-1,0,-1,1,1,0,1,2);
//總計算值的除數,用來調平色彩,最大的用處是控制亮度。等同於photoshop自定義濾鏡裏的那個縮放。
var divisor:Number=1;
//總計算值的偏差,等同於photoshop自定義濾鏡裏的那個位移。
var bias:Number=0;
//創建一個ConvolutionFilter濾鏡對象
var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor,bias);
//應用濾鏡,參數依次是:對象、對象區域、左上角座標、濾鏡。
bmd.applyFilter(bmd,bmd.rect,new Point(0,0),filter);
//BitmapData不是一個顯示對象,所以還是需要Bitmap來顯示一下。
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

再記幾種其他效果
模糊:
matrix=[1,1,1,1,1,1,1,1,1];
divisor=9;
銳化:
matrix=[0,-1,0,-1,5,-1,0,-1,0];
divisor=1;
查找邊緣:
matrix=[0,1,0,1,-4,1,0,1,0];
divisor=0.5;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章