Android中利用颜色过滤调整图象风格

做游戏经常遇到这个情况,一张图片,从完全透明,渐渐过渡到不透明显示出来。

常规的处理方式是:获得该图象的ARGB颜色数组,每次绘制调整颜色信息。这种方法需要把处理的内容绘制到一张缓冲图象上,再获得该图象的颜色信息,每次循环再逐像素处理。比较繁琐。

下面介绍用android封装的滤镜实现半透明过渡效果,先介绍一下颜色矩阵:                               
              |a b c d e  |           |R|
        A = |f  g h  i  j |       C=|G|
              |k l m n o  |           |B|
              |p q  r s t  |           |A|
                                           |1| 

           |R'|
           |G'|
     R'= |B'|=A*C
           |A'|  
           
矩阵A即为颜色矩阵,每行分别表示R、G、B、A通道。每列表示R、G、B、A分量,最后一列是整体偏移。

矩阵C是原来的颜色信息,最终颜色R‘=A*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

 

OK,我们用代码来示例,如何把图象的透明度调为原来的一半:

        //颜色矩阵数据(4*5)
        float[] array = new float[] {
                1, 0, 0, 0, 0,
                0, 1, 0, 0, 0,
                0, 0, 1, 0, 0,
                0, 0, 0, 0.5f, 0 };

        ColorMatrix colorMatrix = new ColorMatrix(array);
        Paint paint = new Paint();
        paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
        g.drawBitmap(img, 0, 0, paint);

 大功告成!其实利用颜色过滤可以实现很多效果,比如转灰度、高光、调整饱和度等等。另外,这个方法对效率有一定的影响,注意优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值