ColorMatrixFilter--顏色矩陣濾鏡(flash.filters.ColorMatrixFilter) 在顆粒等級上提供給你更好的控制方法。ColorMatrixFilter爲 4行5列的多維矩陣(20個元素的數組)。圖1是與ColorMatrixFilter等同的矩陣:html
圖1. 與ColorMatrixFilter等同的矩陣數組
紅,綠,藍通道的值由以下所示計算方法所決定:
CODE:url
redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4] |
能夠看出,第一行的值決定了紅色值,第二行決定綠色,第三行藍色,第四行是透明(Alpha)通道值。一樣能夠看出首四欄值是與紅,綠,藍,alpha通道值的乘積,而第五欄的值分別是和(偏移量)。注意每行的源值和結果值都是在0到255的區間內。所以即便各個通道的值小於0或大於255都會被強制到該區間內。我來舉些例子說明它的原理。
若是你想在紅色通道加100(偏移量),將a[4]設置爲100,如圖2:3d
圖2. 紅色值增長100orm
若是想使綠色通道加倍,將a[6]設爲2,如圖3:htm
圖3. 綠色加倍blog
若是你要使結果圖像中的藍色與原圖的紅色數量相等,將a[10]設爲1, a[12]設爲0 ,如圖4:ip
圖4. 紅色決定藍色值ci
改變圖像的亮度,你須要在每一個顏色通道的值改變一樣的數量。最簡單的途徑是在每一個通道都設置相同的偏移量。偏移量爲正時能夠增長亮度爲負時能夠減少亮度。圖5是一個增長亮度的例子:
圖5. 增長亮度
你也能夠經過將每一個顏色通道與一個值相乘按比例的改變亮度,大於1的增長亮度小於1減少亮度。
按照原理,將圖像轉換爲灰度圖,你須要將每一個通道的部分設爲等值。由於有三個通道,你能夠將每一個通道乘以0.33並將它們相加獲得結果值。如圖6:
圖6.灰度圖矩陣
因爲不一樣顏色通道的相對屏幕發光度,可是確實有特殊的提供更加真實的灰度圖的「亮度係數」值。例如在PS裏建立一個純綠色塊而後把它放在一個純藍色塊,而後將圖像灰度化,你會看到原來綠色的地方的灰色會比原來藍色的區域要亮。
在Flash裏使用這些矩陣,建立一個ColorMatrixFilter的實例而後將它加入到一個影片剪輯(MovieClip)實例上。下面是一個使綠色加倍的例子:
CODE:
import flash.filters.ColorMatrixFilter; var mat:Array = [ 1,0,0,0,0, 0,2,0,0,0, 0,0,1,0,0, 0,0,0,1,0 ]; var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat); mc.filters = [colorMat]; |
ColorMatrixFilter與一個已知的矩陣使用,你能夠完成除了亮度和灰度以外複雜的顏色調整。調整對比度,飽和度和色相等。
下面是Adobe官方提供的一個ColorMatrixFilter操做圖像的在線演示圖:
下載地址:http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf