作者 ivm
今天看了Android 群英傳 中關(guān)于色彩處理部分屑彻,發(fā)現(xiàn)了色彩矩陣捌归,發(fā)現(xiàn)這個真的是厲害非区,今天給大家分享一下
參考了一些資料:http://www.it165.net/pro/html/201505/40131.html
什么是色彩矩陣
顏色矩陣M是一個5*4的矩陣亲茅,如圖所示。在Android中嫁审,顏色矩陣M是以一維數(shù)組m=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]的方式進行存儲的跋炕。
而圖像的RGBA值則存儲在一個5*1的顏色分量矩陣C中,由顏色分量矩陣C可以控制圖像的顏色效果律适。
要想改變一張圖片的顏色效果辐烂,只需要改變圖像的顏色分量矩陣即可遏插。通過顏色矩陣可以很方便的修改圖像的顏色分量矩陣。假設(shè)修改后的圖像顏色分量矩陣為C1纠修,則有如圖所示的顏色分量矩陣計算公式胳嘲。
由此可見,通過顏色矩陣修改了原圖像的RGBA值扣草,從而達到了改變圖片顏色效果的目的了牛。并且,通過如圖3所示的運算可知德召,
顏色矩陣M的第一行參數(shù)abcde決定了圖像的紅色成分,
第二行參數(shù)fghij決定了圖像的綠色成分汽纤,
第三行參數(shù)klmno決定了圖像的藍色成分上岗,
第四行參數(shù)pqrst決定了圖像的透明度,
第五列參數(shù)ejot是顏色的偏移量蕴坪。
初始矩陣
{
1,0,0,0,0
0,1,0,0,0
0,0,1,0,0
0,0,0,1,0
}
增加紅色
{
2,0,0,0,0
0,1,0,0,0
0,0,1,0,0
0,0,0,1,0
}
增加綠色
{
1,0,0,0,0
0,2,0,0,0
0,0,1,0,0
0,0,0,1,0
}
增加藍色
{
1,0,0,0,0
0,1,0,0,0
0,0,2,0,0
0,0,0,1,0
}
改變最后一列
{
1,0,0,0,100
0,1,0,0,100
0,0,1,0,0
0,0,0,1,0
}
最后一列是偏移量 肴掷,紅色增量100 綠色100 結(jié)果是偏黃色
看到這有沒有靈光一閃,沒錯通過 seekbar 可以做一個簡易的 調(diào)色軟件
let’s do it!
布局就不貼了
大概是就一個圖片加上一個seekbar 很簡單的
我們來說說代碼
一般呢修改圖片 都是會生成一張新的圖片背传,所以大體邏輯就是:現(xiàn)獲取一個圖片的 bitmap ,將它一模一樣的復(fù)制一個呆瞻,我們?nèi)ゲ僮鬟@個復(fù)制后的bitmap,操作的方法寫在seekbar 的監(jiān)聽器里径玖。
那么問題來了痴脾,我們獲取了seekbar 的進度,將它寫進矩陣(也就是數(shù)組)通過 colorMatrix set 方法將矩陣數(shù)組set進去,接下來就是重點了梳星,用準(zhǔn)備好的畫筆畫布赞赖,將圖案畫到復(fù)制的bitmap 上
Ok 開始邏輯部分
1. 聲明資源并初始化
2.修改監(jiān)聽器
簡易的圖片修改器就做好了。
還不快自己動手做一個冤灾!
代碼地址:https://github.com/lvm0306/PsTest
明天還有哦~敬請期待