[AS3][Matrix][利用颜色矩阵进行颜色变换]

import  flash.filter.ColorMatrixFilter;

 

颜色矩阵:var arr:Array ;

     R   G   B   A  Off

R   1    0   0   0   0

G   0    1   0   0   0

B   0    0   1   0   0 

A   0    0   0   1   0 

 

    上面这个矩阵就是颜色变换矩阵,颜色变换矩阵是一个四行五列的矩阵。RGBA值算法如下(MC原先的RGBA值用oldR,oldG,oldB,oldA来表示):

R : newRarr[0]  * oldR +  arr[1]  * oldG +  arr[2]  * oldB +  arr[3]  * oldA +  arr[4]  ;

G : newG arr[5]  * oldR +  arr[6]  * oldG +  arr[7]  * oldB +  arr[8]  * oldA +  arr[9]  ;

B : newB = arr[10] * oldR + arr[11] * oldG +  arr[12] * oldB + arr[13] * oldA +  arr[14] ; 

A : newA = arr[15] * oldR + arr[16] * oldG +  arr[17] * oldB + arr[18] * oldA +  arr[19] ;

 

如何利用颜色矩阵:

(1) R   G   B   A  Off

R   1    0   0   0   50

G   0    1   0   0   0

B   0    0   1   0   0 

A   0    0   0   1   0 

 

| R通道的偏移量设为50。即让R通道的R值+50 |

 

(2) R   G   B   A  Off

R   1    0   0   0   0

G   0    1   0   0   0

B   0    0   2   0   0 

A   0    0   0   1   0 

 

| B通道翻倍 |

 

 

(3) R   G   B   A  Off

R   1    0   0   0   0

G   1    0   0   0   0

B   0    0   1   0   0 

A   0    0   0   1   0 

 

 

 

| 让原图的G值等于原图的R值 |

 

 

(4) R   G   B   A  Off                           R      G      B     A    Off

R   1    0   0   0   30                     R  1.2     0       0     0     0

G   1    0   0   0   30                     G    0    1.2      0     0     0

B   0    0   1   0   30                     B     0      0     1.2    0    0

A   0    0   0   1   0        或者        A     0      0       0      1    0

 

| 改变原图的亮度 |

 

 

(5)   R     G     B    A  Off

R   .33  .33  .33   0   0

G   .33  .33  .33   0   0

B   .33  .33  .33   0   0 

A     0      0     0    1   0 

 

| 将原图变为灰度图,在相册的应用中经常会使用到 |

 

具体程序:

 

import flash.filters.ColorMatrixFilter;
var  colorMat:Array  =  [  1 , 0 , 0 , 0 , 100 ,
                       
0 , 1 , 0 , 0 , 0 ,
                       
0 , 0 , 1 , 0 , 0 ,
                       
0 , 0 , 0 , 1 , 0  ];

var  mc:MovieClip  =   new  MovieClip();
var  cmFilter:ColorMatrixFilter  =   new  ColorMatrixFilter(colorMat);
mc.filters 
=  [cmFilter];

 

 

 

转载于:https://www.cnblogs.com/Memo/archive/2008/07/29/1255566.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值