• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            twzheng's cppblog

            『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks
            Flash中的顏色矩陣(ColorMatrixFilter)
            [摘自] http://www.webjx.com

            顏色矩陣

            在flash中可以用矩陣方便的操作顏色。在flash8以前的版本,操作顏色的唯一途徑就是通過修改顏色對象中紅,綠,藍(lán)三個通道的值,在Flash8,"顏色矩陣濾鏡" ColorMatrixFilter (flash.filters.ColorMatrixFilter) 在顆粒等級上提供給你更好的控制方法。"顏色矩陣濾鏡"為 4行5列的多維矩陣(20個元素的數(shù)組)。圖 4 是 與"顏色矩陣濾鏡"等同的矩陣。

            Flash中的顏色矩陣
            圖4. 與"顏色矩陣濾鏡"等同的矩陣

            紅,綠,藍(lán)通道的值由如下所示計算方法所決定:

            CODE:

            redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4]
            greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9]
            blueResult = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14]
            alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]

            可以看出,第一行的值決定了紅色值,第二行決定綠色,第三行藍(lán)色,第四行是透明(Alpha)通道值。同樣可以看出首四欄值是與紅,綠,藍(lán),alpha通道值的乘積,而第五欄的值分別是和(偏移量)。注意每行的源值和結(jié)果值都是在0到255的區(qū)間內(nèi)。因此即使各個通道的值小于0或大于255都會被強制到該區(qū)間內(nèi)。我來舉些例子說明它的原理。

            果你想在紅色通道加100(偏移量),將a[4]設(shè)置為100,如(圖5) 。

            Flash中的顏色矩陣
            圖5. 紅色值增加100

            如果想使綠色通道加倍,將a[6]設(shè)為2,如(圖6)

            Flash中的顏色矩陣
            圖6. 綠色加倍

            如果你要使結(jié)果圖像中的藍(lán)色與原圖的紅色數(shù)量相等,將a[10]設(shè)為1, a[12]設(shè)為0 ,如(圖7)

            Flash中的顏色矩陣
            圖7. 紅色決定藍(lán)色值

            改變圖像的亮度,你需要在每個顏色通道的值改變同樣的數(shù)量。最簡單的途徑是在每個通道都設(shè)置相同的偏移量。偏移量為正時可以增加亮度為負(fù)時可以減小亮度。(圖8) 是一個增加亮度的例子。

            Flash中的顏色矩陣
            圖8. 增加亮度

            你也可以通過將每個顏色通道與一個值相乘按比例的改變亮度,大于1的增加亮度小于1減小亮度。
            按照原理,將圖像轉(zhuǎn)換為灰度圖,你需要將每個通道的部分設(shè)為等值。因為有三個通道,你可以將每個通道乘以0.33并將它們相加得到結(jié)果值。如(圖9)

            Flash中的顏色矩陣
            圖9.灰度圖矩陣

            由于不同顏色通道的相對屏幕發(fā)光度,但是 確實有特殊的提供更加真實的灰度圖的"亮度系數(shù)"值 。例如在PS里創(chuàng)建一個純綠色塊然后把它放在一個純藍(lán)色塊 ,然后將圖像灰度化,你會看到原來綠色的地方的灰色會比原來藍(lán)色的區(qū)域要亮。

            在Flash里使用這些矩陣,創(chuàng)建一個"顏色矩陣濾鏡"的實例然后將它加入到一個影片剪輯(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);
            clip.filters = [colorMat];

            "顏色矩陣濾鏡"與一個已知的矩陣使用,你可以完成除了亮度和灰度之外復(fù)雜的顏色調(diào)整。調(diào)整對比度,飽和度和色相在 Flash 8種都成為了肯能。雖然在這里討論這些話題與這篇文章有些遠(yuǎn),但是足以說 Flash 8提供了一個以前任何版本都不能做到的顏色操作途徑。

            下面的flash可以看到在操作圖像時結(jié)果矩陣是怎么改變的!
            Flash:
            http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf

            posted on 2007-10-30 12:39 譚文政 閱讀(3788) 評論(1)  編輯 收藏 引用 所屬分類: Flash ActionScript

            評論

            # re: Flash中的顏色矩陣(ColorMatrixFilter) 2008-05-21 15:54 dodo
            很好,很好。可氣的是,自己的矩陣知識全部還給老師了。  回復(fù)  更多評論
              

            国产一久久香蕉国产线看观看| 久久人妻少妇嫩草AV蜜桃| 久久天堂AV综合合色蜜桃网 | 日韩精品国产自在久久现线拍| 麻豆精品久久精品色综合| 亚洲国产精品无码久久青草 | 久久久久国产精品| 色偷偷88欧美精品久久久| 欧洲成人午夜精品无码区久久 | 99久久夜色精品国产网站| 国产精品久久久久jk制服| 午夜精品久久久久久| 久久亚洲精品中文字幕三区| 国产精品久久久久a影院| 99精品久久久久久久婷婷| 久久亚洲欧美国产精品| 久久久这里有精品中文字幕| 久久婷婷国产麻豆91天堂| 久久人人妻人人爽人人爽| 亚洲国产成人久久笫一页| 91精品免费久久久久久久久| 久久精品国产亚洲AV嫖农村妇女 | 26uuu久久五月天| 亚洲精品国产字幕久久不卡| 久久夜色精品国产亚洲av| 久久美女人爽女人爽| 7777久久亚洲中文字幕| 亚洲va久久久噜噜噜久久天堂| 久久无码一区二区三区少妇 | A狠狠久久蜜臀婷色中文网| 欧美伊人久久大香线蕉综合69 | 波多野结衣中文字幕久久| 97精品伊人久久大香线蕉| 大香伊人久久精品一区二区| 免费一级欧美大片久久网| 久久久久亚洲精品中文字幕| 久久久久亚洲AV无码专区桃色| 日日狠狠久久偷偷色综合96蜜桃| 久久久免费观成人影院| 久久亚洲精品无码aⅴ大香| 亚洲AV日韩精品久久久久久久|