在編程中有時候需要對圖片做特殊的處理,比如將圖片做出黑白的,或者老照片的效果,有時候還要對圖片進行變換,以拉伸,扭曲等等。
這些效果在android中有很好的支持,通過顏色矩陣(ColorMatrix)和坐標變換矩陣(Matrix)可以完美的做出上面的所說的效果。
下面將分別介紹這兩個矩陣的用法和相關的函數。
顏色矩陣
android中可以通過顏色矩陣(ColorMatrix類)方面的操作顏色,顏色矩陣是一個5x4 的矩陣(如圖1.1)
可以用來方面的修改圖片中RGBA各分量的值,顏色矩陣以一維數組的方式存儲如下:
[ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]
他通過RGBA四個通道來直接操作對應顏色,如果會使用Photoshop就會知道有時處理圖片通過控制RGBA各顏色通道來做出特殊的效果。
這個矩陣對顏色的作用計算方式如1.3示:

矩陣的運算規則是矩陣A的一行乘以矩陣C的一列作為矩陣R的一行,
C矩陣是圖片中包含的ARGB信息,R矩陣是用顏色矩陣應用于C之后的新的顏色分量,運算結果如下:
R' = a*R + b*G + c*B + d*A + e;
G' = f*R + g*G + h*B + i*A + j;
B' = k*R + l*G + m*B + n*A + o;
A' = p*R + q*G + r*B + s*A + t;
顏色矩陣并不是看上去那么深奧,其實需要使用的參數很少,而且很有規律第一行決定紅色第二行決定綠色
第三行決定藍色,第四行決定了透明度,第五列是顏色的偏移量。下面是一個實際中使用的顏色矩陣。

如果把這個矩陣作用于各顏色分量的話,R=A*C,計算后會發現,各個顏色分量實際上沒有任何的改變(R'=R G'=G B'=B A'=A)。

圖1.5所示矩陣計算后會發現紅色分量增加100,綠色分量增加100,
這樣的效果就是圖片偏黃,因為紅色和綠色混合后得到黃色,黃色增加了100,圖片當然就偏黃了。

改變各顏色分量不僅可以通過修改第5列的顏色偏移量也可如上面矩陣所示將對應的顏色值乘以一個倍數,直接放大。
上圖1.6是將綠色分量乘以2變為原來的2倍。相信讀者至此已經明白了如何通過顏色矩陣來改變各顏色分量。
下面編寫一段代碼來,通過調整顏色矩陣來獲得不同的顏色效果
posted on 2011-10-25 11:05
小果子 閱讀(247)
評論(0) 編輯 收藏 引用 所屬分類:
Android & Ios