颜色矩阵,对每一个像素点的颜色(ARGB)进行更改,像ps一样的改变图像的颜色。因为运算大量的像素点,colorMatrix是native方法。
这里主要是讲怎么使用。
一。先看下面色彩矩阵表示方式


看看运行效果,将上面的色块进行矩阵变换,去掉了红色元素,透明度变为之前的0.8f,矩阵代码如下:

 matrix.set(new float[]{1,0,0,    0,   0,0,0,0,    0,   0,0,0,1,    0,   0,0,0,0,    0.8f,0,});

使用起来很方便,所有的代码如下:

 public ColorFilterView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);paint = new Paint(Paint.ANTI_ALIAS_FLAG);paint.setColor(Color.rgb(82, 173, 125));rect = new Rect(20, 20, 350, 350);//第二个色块paint1 = new Paint(Paint.ANTI_ALIAS_FLAG);rect1 = new Rect(20, 20, 350, 350);//设置颜色过滤矩阵,不增加颜色增量,去掉green//只保留红色,blue原来的0.9,ColorMatrix matrix = new ColorMatrix();matrix.set(new float[]{1,0,0,    0,   0,0,0,0,    0,   0,0,0,1,    0,   0,0,0,0,    0.8f,0,});matrix.setRotate(2,170);ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(matrix);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawRect(rect, paint);canvas.translate(0,400);canvas.drawRect(rect1,paint1);}

—–单调的颜色看不出问题,下面使用图片的效果,左边去是抽掉Red色素右边是去掉Green的色素的效果图—–

—-代码如下——

   //设置颜色过滤矩阵,不增加颜色增量,去掉greenColorMatrix matrix = new ColorMatrix();matrix.set(new float[]{1,0,0, 0,   0,0,0,0, 0,   0,0,0,1, 0,   0,0,0,0, 1,   0,});ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(matrix);paint1.setColorFilter(colorFilter);bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.meinv);rect2 = new Rect(20,20,20+bitmap.getWidth(),20+bitmap.getHeight()); @Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawBitmap(bitmap,rect2, rect2, paint);canvas.translate(0,bitmap.getHeight()+30);canvas.drawBitmap(bitmap,rect2,rect2,paint1);}

—-第三种反相效果—–

反相效果是比如原来RGB色素分别是:100、200、150;
反相后的RGB色素值分别是:155、55、 105;
前后加起来的刚好是255.
下面是矩阵代码,注意按Red、Green、Blue的分量到了最大,系数为-1.

   matrix.set(new float[]{-1, 0, 0, 0,   255,0,-1, 0, 0,   255,0, 0,-1, 0,   255,0, 0, 0, 1,   0,});

//复古效果matrix.set(new float[]{1 / 2f, 1 / 2f, 1 / 2f, 0, 0,1 / 3f, 1 / 3f, 1 / 3f, 0, 0,1 / 4f, 1 / 4f, 1 / 4f, 0, 0,0, 0, 0, 1, 0,});

—-反色效果——
Red和Green的位置替换

 matrix.set(new float[]{0, 1f, 0, 0, 0,1f, 0, 0, 0, 0,0, 0, 1f, 0, 0,0, 0, 0, 1f, 0,});

ColorMatrix(颜色滤镜)介绍和使用相关推荐

  1. 【Android自定义View】Bitmap的绘制和颜色滤镜

    前言 Bitmap在开发中是经常遇到的,因为他用到的地方有很多,比如Android的图片预览,自定义相机,自定义美颜相机,图片滤镜,图像算法....,既然使用场景这么多,今天就先讲一下Android中 ...

  2. 图像视频滤镜算法---颜色滤镜

    承接上一篇滤镜初识,本文将介绍第一种滤镜:颜色滤镜. 颜色滤镜 颜色滤镜即调色滤镜,也是最常见的滤镜,任何通过调节图像像素值的亮度.对比度.饱和度.色相等等方法,得到的不同于原图像颜色的效果,都统称为 ...

  3. FFmpeg源码分析:视频滤镜介绍(上)

    FFmpeg在libavfilter模块提供音视频滤镜.所有的视频滤镜都注册在libavfilter/allfilters.c.我们也可以使用ffmpeg -filters命令行来查看当前支持的所有滤 ...

  4. 10个你未必知道的CSS技巧与14种cssdiv中基本滤镜介绍

    2019独角兽企业重金招聘Python工程师标准>>> 1.CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight:bold; font-style:i ...

  5. LayaBOX添加颜色滤镜

    /初始化舞台 Laya.init(1334, 750,Laya.WebGL); //设置舞台背景色 Laya.stage.bgColor = "#ffffff"; //原始位图 c ...

  6. FFmpeg源码分析:视频滤镜介绍(下)

    FFmpeg在libavfilter模块提供音视频滤镜.所有的视频滤镜都注册在libavfilter/allfilters.c.我们也可以使用ffmpeg -filters命令行来查看当前支持的所有滤 ...

  7. 不同数字对应的颜色C语言,图像视频滤镜算法---颜色滤镜

    承接上一篇滤镜初识,本文将介绍第一种滤镜:颜色滤镜. 颜色滤镜 颜色滤镜即调色滤镜,也是最常见的滤镜,任何通过调节图像像素值的亮度.对比度.饱和度.色相等等方法,得到的不同于原图像颜色的效果,都统称为 ...

  8. 【OpenGL学习】3DLUT颜色滤镜

    LUT颜色滤镜 LUT颜色滤镜是指通过LUT的方式来实现的颜色滤镜.也把它叫做LUT滤镜,LUT滤镜是当前各大主流美图/视频软件滤镜的主要实现方案,通过添加不同的LUT滤镜使画面展示出不一样的色彩.下 ...

  9. 电脑出现负片情况,底片效果怎么解决?(win10颜色滤镜功能)

    使用过win10的滤镜桌面  正常的win10桌面 如何关闭呢 1.首先在搜索里搜索"颜色滤镜" 2.进入设置页面(直接关闭,同时将快捷键关闭,该功能主要是为了色盲人群设置的)

最新文章

  1. Java 高并发面试题
  2. 【自动驾驶】4.分布式实时通信——DDS技术
  3. springboot使用redisTemplate 报错:APP FAILED TO START Field template in required a single bean redis工具类
  4. php7 关联nginx,nginx+php7配合开发
  5. 平板电脑可以开发php吗,PHP代码判断设备是手机还是平板电脑(两种方法)
  6. Bootstrap3 带悬停效果的表格样式
  7. 【英语学习】【WOTD】reverberate 释义/词源/示例
  8. linux命令-eq是什么意思,linux查看系统信息命令
  9. python json key_最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
  10. Codeigniter3学习笔记三(创建类库及使用原生类库)
  11. c语言void swap1,C语言的一些遗留问题(1):关于交换两个数的swap()函数的一些问题...
  12. 51单片机交通灯(十字路口演示)
  13. SQL技巧——行转列/列转行
  14. AD13中对工程进行编译出现的error
  15. java电子通讯录毕业设计_JAVA电子通讯录(带系统托盘)009
  16. 计算机体系结构多处理器性能评价指标——加速比
  17. 【见闻录系列】我所理解的搜索业务二三事
  18. 连接跟踪TCP序号检查
  19. 【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么
  20. java-php-python-ssm-旅游系统-计算机毕业设计

热门文章

  1. fpga挂一片ddr2_FPGA的DDR2 SDRAM IP核的使用
  2. Ubuntu卸载自带Firefox安装Firefox中国版
  3. 此电脑右键管理提示windows找不到文件的解决方法
  4. Spring boot 使用QRCodeWriter 制作二维码
  5. MapReduce的自定义计数器
  6. CoCosCreator2.2.1 入门教程
  7. 使用远见远控软件控制靶机
  8. C语言 实验10-1 圆形体体积计算器 (20分)
  9. 使用xmlHttprequest有感
  10. android 日历源码解析,Android 4.0日历(calendar)源码分析之概览