ColorMatrix(颜色滤镜)介绍和使用
颜色矩阵,对每一个像素点的颜色(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(颜色滤镜)介绍和使用相关推荐
- 【Android自定义View】Bitmap的绘制和颜色滤镜
前言 Bitmap在开发中是经常遇到的,因为他用到的地方有很多,比如Android的图片预览,自定义相机,自定义美颜相机,图片滤镜,图像算法....,既然使用场景这么多,今天就先讲一下Android中 ...
- 图像视频滤镜算法---颜色滤镜
承接上一篇滤镜初识,本文将介绍第一种滤镜:颜色滤镜. 颜色滤镜 颜色滤镜即调色滤镜,也是最常见的滤镜,任何通过调节图像像素值的亮度.对比度.饱和度.色相等等方法,得到的不同于原图像颜色的效果,都统称为 ...
- FFmpeg源码分析:视频滤镜介绍(上)
FFmpeg在libavfilter模块提供音视频滤镜.所有的视频滤镜都注册在libavfilter/allfilters.c.我们也可以使用ffmpeg -filters命令行来查看当前支持的所有滤 ...
- 10个你未必知道的CSS技巧与14种cssdiv中基本滤镜介绍
2019独角兽企业重金招聘Python工程师标准>>> 1.CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight:bold; font-style:i ...
- LayaBOX添加颜色滤镜
/初始化舞台 Laya.init(1334, 750,Laya.WebGL); //设置舞台背景色 Laya.stage.bgColor = "#ffffff"; //原始位图 c ...
- FFmpeg源码分析:视频滤镜介绍(下)
FFmpeg在libavfilter模块提供音视频滤镜.所有的视频滤镜都注册在libavfilter/allfilters.c.我们也可以使用ffmpeg -filters命令行来查看当前支持的所有滤 ...
- 不同数字对应的颜色C语言,图像视频滤镜算法---颜色滤镜
承接上一篇滤镜初识,本文将介绍第一种滤镜:颜色滤镜. 颜色滤镜 颜色滤镜即调色滤镜,也是最常见的滤镜,任何通过调节图像像素值的亮度.对比度.饱和度.色相等等方法,得到的不同于原图像颜色的效果,都统称为 ...
- 【OpenGL学习】3DLUT颜色滤镜
LUT颜色滤镜 LUT颜色滤镜是指通过LUT的方式来实现的颜色滤镜.也把它叫做LUT滤镜,LUT滤镜是当前各大主流美图/视频软件滤镜的主要实现方案,通过添加不同的LUT滤镜使画面展示出不一样的色彩.下 ...
- 电脑出现负片情况,底片效果怎么解决?(win10颜色滤镜功能)
使用过win10的滤镜桌面 正常的win10桌面 如何关闭呢 1.首先在搜索里搜索"颜色滤镜" 2.进入设置页面(直接关闭,同时将快捷键关闭,该功能主要是为了色盲人群设置的)
最新文章
- Java 高并发面试题
- 【自动驾驶】4.分布式实时通信——DDS技术
- springboot使用redisTemplate 报错:APP FAILED TO START Field template in required a single bean redis工具类
- php7 关联nginx,nginx+php7配合开发
- 平板电脑可以开发php吗,PHP代码判断设备是手机还是平板电脑(两种方法)
- Bootstrap3 带悬停效果的表格样式
- 【英语学习】【WOTD】reverberate 释义/词源/示例
- linux命令-eq是什么意思,linux查看系统信息命令
- python json key_最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
- Codeigniter3学习笔记三(创建类库及使用原生类库)
- c语言void swap1,C语言的一些遗留问题(1):关于交换两个数的swap()函数的一些问题...
- 51单片机交通灯(十字路口演示)
- SQL技巧——行转列/列转行
- AD13中对工程进行编译出现的error
- java电子通讯录毕业设计_JAVA电子通讯录(带系统托盘)009
- 计算机体系结构多处理器性能评价指标——加速比
- 【见闻录系列】我所理解的搜索业务二三事
- 连接跟踪TCP序号检查
- 【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么
- java-php-python-ssm-旅游系统-计算机毕业设计
热门文章
- fpga挂一片ddr2_FPGA的DDR2 SDRAM IP核的使用
- Ubuntu卸载自带Firefox安装Firefox中国版
- 此电脑右键管理提示windows找不到文件的解决方法
- Spring boot 使用QRCodeWriter 制作二维码
- MapReduce的自定义计数器
- CoCosCreator2.2.1 入门教程
- 使用远见远控软件控制靶机
- C语言 实验10-1 圆形体体积计算器 (20分)
- 使用xmlHttprequest有感
- android 日历源码解析,Android 4.0日历(calendar)源码分析之概览