[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 : newR =? arr[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
總結
以上是生活随笔為你收集整理的[AS3][Matrix][利用颜色矩阵进行颜色变换]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Everyday English
- 下一篇: [导入]伍迷创意随想集 之 聚众广告创精