• [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];
  • 相关阅读:
    编程算法
    JDBC连接MySQL数据库及演示样例
    CKEditor&ckfindtor
    从零開始开发Android版2048 (五) 撤销的实现
    TCP/IP之分层
    poj2239 Selecting Courses --- 二分图最大匹配
    英尺到米的换算
    概率dp ZOJ 3640
    Android应用程序注冊广播接收器(registerReceiver)的过程分析
    TsFltMgr.sys系统蓝屏的原因就在于QQ电脑管家!
  • 原文地址:https://www.cnblogs.com/Memo/p/1255566.html
Copyright © 2020-2023  润新知