颜色矩阵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]的方式进行存储的。

矩阵的每行分别是:
R[a b c d e]
G[f g h i j]
B[k l m n o]
A[p q r s t]
图像的RGBA值则存储在一个5*1的颜色分量矩阵C中,要想改变一张图片的颜色效果,只需要改变图像的颜色分量矩阵即可。

在对ColorMatrixFilter过滤时候,传入的这个参数ColorMatrix,首先应该postConcat亮度矩阵:

        float lum = (亮度百分比 - 50) * 2 * 255 * 0.01f;                 1, 0, 0, 0, lum,                 0, 1, 0, 0, lum,                 0, 0, 1, 0, lum,                 0, 0, 0, 1, 0

再postConcat对比度矩阵:

        //scale为1时为普通模式,[0 , 1]为减少对比度,[1 , 1 + factor]为增加对比度        float scale = 1;        if (contrast < 50)        {            scale = contrast / 50f;        }        else if (contrast > 50)        {            scale = (contrast - 50) / 50f * 2.5f + 1;        }        float lum = 256 * 亮度比/ 100 * (1f - scale);

最终矩阵应该为
scale, 0, 0, 0, lum,
0, scale, 0, 0, lum ,
0, 0, scale, 0, lum ,
0, 0, 0, 1, 0

最后再乘一些效果矩阵,比如黑白矩阵:

        float a = 0.3086f * 256;        float b = 0.6094f * 256;        float c = 0.0820f * 256;        float lum = -256 * 黑白比;                 a, b, c, 0, lum,                 a, b, c, 0, lum,                 a, b, c, 0, lum,                 0, 0, 0, 1, 0}

图片效果:冲蚀 和 填充方式:水印是不同的效果。
水印是指将一个图印在一个图上。水印效果里面可以添加冲蚀,这种通常被用来做背景图片。如果水印未选择冲蚀,那么水印上去的应该是原图。
冲蚀效果是通过调整图片的 对比度和 亮度来实现的。

更多相关文章

  1. Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍
  2. Android(安卓)UI设计之自定义Dialog,实现各种风格效果的对话框
  3. 10种技巧可提升Android应用运行效果
  4. 如何让安卓(Android)子控件超出父控件的范围显示
  5. Android(安卓)窗帘(Curtain)效果二之波浪式动态扭曲效果
  6. 《Android群英传》读书笔记(6)第六章:Android绘图机制与处理技巧之
  7. 【Android(安卓)界面效果17】Android手机平板两不误,使用Fragment
  8. Android(安卓)自定义 View 实现跑马灯效果
  9. Android绘图机制与处理技巧(二)——Android图像处理之色彩特效处理

随机推荐

  1. Android(安卓)WebView加载页面的输入框被
  2. Android(安卓)zxing 二维码扫描和生成方
  3. android JNI 开发技术 (C/C++基础篇)
  4. BroadCast广播实例
  5. android inflater的用法
  6. 使用HTTP协议访问网络(Android)
  7. android系统对linux内核的主要补丁
  8. 如何使用GreenDAO 3.0
  9. AsyncTask的坑,Handler,Looper与MessageQue
  10. Android(安卓)MVP设计模式登录具体实现Ma