ColorMatrix 的奇妙用法1

作者: lovesosoi | 来源:发表于2017-03-16 22:38 被阅读0次

    作者 ivm

    今天看了Android 群英传 中关于色彩处理部分,发现了色彩矩阵,发现这个真的是厉害,今天给大家分享一下

    参考了一些资料:http://www.it165.net/pro/html/201505/40131.html

    什么是色彩矩阵

    颜色矩阵M是一个5*4的矩阵,如图所示。在Android中,颜色矩阵M是以一维数组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可以控制图像的颜色效果。

    矩阵

    要想改变一张图片的颜色效果,只需要改变图像的颜色分量矩阵即可。通过颜色矩阵可以很方便的修改图像的颜色分量矩阵。假设修改后的图像颜色分量矩阵为C1,则有如图所示的颜色分量矩阵计算公式。

    矩阵

    由此可见,通过颜色矩阵修改了原图像的RGBA值,从而达到了改变图片颜色效果的目的。并且,通过如图3所示的运算可知,

    颜色矩阵M的第一行参数abcde决定了图像的红色成分,

    第二行参数fghij决定了图像的绿色成分,

    第三行参数klmno决定了图像的蓝色成分,

    第四行参数pqrst决定了图像的透明度,

    第五列参数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 结果是偏黄色

    看到这有没有灵光一闪,没错通过 seekbar 可以做一个简易的 调色软件

    let’s do it!

    布局就不贴了

    大概是就一个图片加上一个seekbar 很简单的

    我们来说说代码

    一般呢修改图片 都是会生成一张新的图片,所以大体逻辑就是:现获取一个图片的 bitmap ,将它一模一样的复制一个,我们去操作这个复制后的bitmap,操作的方法写在seekbar 的监听器里。

    那么问题来了,我们获取了seekbar 的进度,将它写进矩阵(也就是数组)通过 colorMatrix set 方法将矩阵数组set进去,接下来就是重点了,用准备好的画笔画布,将图案画到复制的bitmap 上

    Ok 开始逻辑部分

    1. 声明资源并初始化

    初始化 初始化
    初始化

    2.修改监听器

    建提前

    简易的图片修改器就做好了。

    样图

    还不快自己动手做一个!

    代码地址:https://github.com/lvm0306/PsTest

    明天还有哦~敬请期待

    相关文章

      网友评论

        本文标题:ColorMatrix 的奇妙用法1

        本文链接:https://www.haomeiwen.com/subject/eadsnttx.html