原图:效果1:效果2:

效果3:效果4:

查看官方的API,其中ColorMatrix的说明如下:

5x4 matrix for transforming the color+alpha components of a Bitmap. The matrix is stored in a single array, and its

treated as follows: [ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ] When applied to a color [r, g, b, a], the resulting

color is computed as (after clamping) 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;

那这里我简单的理解为:

所谓的颜色矩阵其实就是一张位图,那这个位图是5*4的矩阵,这个矩阵涉及到颜色和透明度,按照以上的一个公式,我们可以将这个颜色矩阵绘制出来:

a   b   c    d   e

f    g   h    i    j

k    l   m   n   o

p    q   r   s    i

除了5*4的颜色矩阵外,我们还需要图像的RGBA的值,通过RGBA可以决定图片颜色所呈现的效果,图像的RGBA的值存储在一个5*1的颜色分量矩阵中,如下:

R

G

B

A

1

如果我们要改变图像的颜色,可以通过改变图像的颜色分量矩阵就可以做到,关于颜色分量矩阵的计算公式如下:

a   b   c    d   e         R         aR+bG+cB+dA+e

f    g   h    i    j          G          fR+gG+hB+jA+j

*  B  =

k    l   m   n   o          A         kR+IG+mB+nA+o

p    q   r   s    i           1         pR+qG+rB+sA+i

因此以上第一行代表红色成分,第二行代表绿色成分,第三行代表蓝色成分,第四行代表透明度。

代码如下:

public class MainActivity extends Activity {private Button btn_start;private ImageView img;private Bitmap bitmap;private float[] colorArray = {  1, 0, 0, 0, 0,0, 1, 0, 0, 1,2, 0, 1, 0, 0,0, 0, 0, 1, 0 };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.image_layout);initView();}private void initView() {img = (ImageView) findViewById(R.id.iv_image);bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();btn_start = (Button) findViewById(R.id.btn_start);btn_start.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Bitmap bm = ImageTools.toProcessImage(bitmap,colorArray);img.setImageBitmap(bm);}});}
}

ImageTools工具类:

/*** 图片特效处理* @param bmp  传入的图片* @param colorArray 颜色矩阵值 * @return*/public static Bitmap toProcessImage(Bitmap bmp,float[] colorArray){if(bmp!=null&&colorArray!=null){int width, height;height = bmp.getHeight();width = bmp.getWidth();Bitmap bm = Bitmap.createBitmap(width, height,Bitmap.Config.RGB_565);Paint myPaint = new Paint(); Canvas canvas=new Canvas(bm);               ColorMatrix myColorMatrix = new ColorMatrix(); myColorMatrix.set(colorArray);myPaint.setColorFilter(new ColorMatrixColorFilter(myColorMatrix));     canvas.drawBitmap(bmp,0,0,myPaint);  return bm;}else{return bmp;}}

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/45193115 情绪控_

Android之利用ColorMatrix进行图片的各种特效处理相关推荐

  1. Android下利用Bitmap切割图片

    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了. 下面是程序的关键代码 ...

  2. android matrix 实现点击旋转,Android中利用matrix 控制图片的旋转、缩放、移动

    本文主要讲解利用android中Matrix控制图形的旋转缩放移动,具体参见一下代码: /** * 使用矩阵控制图片移动.缩放.旋转 */ public class CommonImgEffectVi ...

  3. Android Jetpack: 利用 Palette 进行图片取色 | 开发者说·DTalk

    本文原作者: BennuC,原文发布于: BennuCTech Palette 即调色板这个功能其实很早就发布了,Jetpack 同样将这个功能也纳入其中,想要使用这个功能,需要先依赖库. imple ...

  4. android获取区域内像素坐标,Android利用BitMap获得图片像素数据的方法

    本文实例讲述了Android利用BitMap获得图片像素数据的方法.分享给大家供大家参考,具体如下: 网上看到的参考是: int[] pixels = new int[bit.getWidth()*b ...

  5. Android利用ViewPager实现图片浏览,解决内存问题

    在Android开发中,我们经常遇到利用Viewpager实现图片浏览的需求,这个很好实现,也没什么技术难点,但是最近我在实现这个功能的时候,遇到了一些问题,当图片数量稍微多点时,一直滑动浏览,会导致 ...

  6. Android 使用ColorMatrix改变图片颜色

    ColorMatrix的颜色矩阵介绍 颜色矩阵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]的方 ...

  7. android照片添加gps,如何利用Exif为图片文件添加GPS坐标信息

    今天主要给大家分享一个知识点--如何利用Exif为图片文件添加GPS坐标信息,关于这个知识点网上的资料很多,而且这个知识点本身应该是不难的,但是当我在项目使用时却遇到了一个问题:在读取某个图片的坐标信 ...

  8. android picasso源码下载,Picasso:一个专为Android制作的强大的图片下载和缓存库

    Picasso:一个专为Android打造的强大的图片下载和缓存库 简介 在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验.幸运的是,Picasso为你的应用提供了非常容易的 ...

  9. android摄像头方向与屏方向,Android通过ExifInterface判断Camera图片方向的方法

    Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向 图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Imag ...

最新文章

  1. Express请求处理-GET和POST请求参数的获取
  2. Pytorch数据类型转换
  3. springboot配置对jsp页面的解析支持
  4. 18.抽象模板方法———获取程序运行的时间
  5. ddr3服务器内存条维修,详解服务器中内存故障的优质解决方案
  6. delve应该安装到哪_消防水炮安装高度为多少米标准
  7. 【操作系统】死锁-思维导图
  8. 获取extjs 选择后的表头_OD数据获取脚本分享
  9. Bootstrap视频教程百度云盘免费下载地址-CSDN免费下载
  10. Java解析XML并自动写入Excel
  11. python 实现死亡之ping
  12. Termux:api 使用及脚本分享
  13. 开源、个人博客等网站搭建、上云费用控、软件程序爱好者资源集锦
  14. 6. LaTeX 参考文献的排版与引用
  15. LINUX系统开机后出现assuming drive cache:write through的办法
  16. input设置disable鼠标移上去怎么出现禁止的红色图标
  17. FineReport html5图表简介
  18. 广式粤语VS港式粤语
  19. 计算机发展史资料简介,计算机发展史简介
  20. CSA标准|《物联网安全规范》(征求意见稿)意见征集

热门文章

  1. vue在created调用点击方法_vue中created、mounted等方法整理
  2. ethereumjs/ethereumjs-vm-4-tests
  3. .net 程序加密方法
  4. nodejs模块加载分析(1).md
  5. 半监督学习下的高维图构建
  6. 云时代看CRM如何引领企业成功?
  7. 使用openssl给web站点颁发证书
  8. Zabbix2.4安装和问题总结(一)
  9. 被IP代理网站屏蔽了,真是跪了
  10. ruby中DBI连接MySQL数据库步骤详解