Android色彩矩阵——ColorMatrix
在Android的开发中,我们少不了对图片进行处理,其中最常使用的数据结构就是位图Bitmap,它包含了一张图片的所有数据。
既然是位图那它就是由一个个像素点组成的。每一个像素点都会有其对应的颜色值——ARGB,分别对应透明度、红、绿、蓝这四个分量。它们共同决定了每个像素点显示的颜色。
色彩矩阵概念
在Android中图片是以RGBA像素点的形式加载到内存中的,修改这些像素信息需要一个叫做ColorMatrix类的支持。ColorMatrix就是Android系统使用的色彩矩阵。
Android中的颜色矩阵是一个4×5的数字矩阵:
在Android中他会以一维数组的形式来存储:(float[]类型)
[ a, b, c, d, e,f, g, h, i, j,k, l, m, n, o,p, q, r, s, t ]
一般我们为了可读性,我们会写得好看些:
new float[]{a, b, c, d, e,f, g, h, i, j,k, l, m, n, o,p, q, r, s, t };
那这个矩阵该怎么使用呢?其实就是使用矩阵乘法运算。
这里有一个色彩矩阵分量C,代表着我们要进行色彩变化的原色彩。
矩阵R则代表通过矩阵乘法运算AC而得到的新的颜色。
通过矩阵乘法可知:
通过这个公式我们就可以得出我们的色彩矩阵A的意义:
- 第一行的abcde值用来决定新的颜色值中的R
- 第二行的fghij值用来决定新的颜色值中的G
- 第三行的klmno值用来决定新的颜色值中的B
- 第四行的pqrdt值用来决定新的颜色值中的A
- 其中第五列ejot值分别用来决定每个分量重的offset,即偏移量
Android中我们可以通过如下语句来创建我们的色彩矩阵:
ColorMatrix colorMatrix = new ColorMatrix();
这个语句会创建一个初始矩阵A,即:
跟这个矩阵相乘的颜色分量是不会改变的,即
之前说了矩阵是通过一维数组的形式来存储的,所以我们也可以通过如下语句创建我们想要的色彩矩阵:
ColorMatrix colorMatrix = new ColorMatrix(new float[]{ 0.5F, 0, 0, 0, 0, 0, 0.5F, 0, 0, 0, 0, 0, 0.5F, 0, 0, 0, 0, 0, 1, 0,
});
我们也可以使用如下语句将我们的矩阵变成数组形式:
float colorMatrixArray[] = colorMatrix.getArray();
色彩矩阵的基础就讲到这,下面我们来看怎么使用色彩矩阵改变颜色值吧。
用色彩矩阵改变颜色值
使用色彩矩阵改变颜色值一般有三种方法:
1. 直接改变色彩矩阵的offset偏移量
2. 直接改变对应RGBA值的系数
3. 使用封装好的API来改变参数
改变偏
Android色彩矩阵——ColorMatrix相关推荐
- Android的矩阵(一):ColorMatrix
最近的学习过程中看到关于android色彩矩阵的内容,以前看到这部分内容,基本都是跳过的,没有认真细读. 自己给自己找的借口是: 1,大一学的矩阵内容早就忘的干干净净了,当时学的时候就很烦人,所以现在 ...
- Android色彩特效处理之色调、饱和度、亮度、ColorMatrix精炼详解
一.前期基础知识储备 Bitmap(位图文件),扩展名可以是.bmp或者.dib.位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2.4.8.16. ...
- Color correction matrix(色彩矩阵)的学习思考
Color correction matrix(色彩矩阵)的学习思考 转载于:Color correction matrix(色彩矩阵)的学习思考 一张好的色彩效果图像,是gamma,AWB,CCM, ...
- Android 颜色矩阵 滤镜 ColorMatrix (复古,蓝调,淡雅,传统,胶片,怀旧,浪漫等)你想要的滤镜
首先我来给大家展示一下我的整体效果: 我们要用到的是ColorMatrix,ColorMatrix的三个方法: setRotate:调整色相 setSaturation:调整色彩饱和度 setScal ...
- android显示矩阵大小,关于android:显示代表灰度图像的双值矩阵
我的问题是:我有一个字节数组,必须与ImageView一起显示. 这是我的代码: @Override protected void onCreate(Bundle savedInstanceState ...
- Android:滤镜效果ColorMatrix用法一
点击这里看视频演示效果 简单说说 我们的实现的效果是类似photoshop,调节RGB三通道的比重.透明度.色彩饱和度 先回答这个问题,把大象放冰箱需要几步? 打开冰箱门 把大象放进去 关上冰箱门 给 ...
- 颜色矩阵ColorMatrix的使用
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 颜色矩阵是一个4x 5的矩阵,如下图: 让它和颜色分量RGBA相乘去改变RGBA的值 至于矩阵的运算就不多说了 ...
- Android之利用ColorMatrix进行图片的各种特效处理
原图:效果1:效果2: 效果3:效果4: 查看官方的API,其中ColorMatrix的说明如下: 5x4 matrix for transforming the color+alpha compon ...
- ColorMatrixFilter 色彩矩阵滤镜
包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter BitmapFilter Object 使用 ...
最新文章
- 1-2 用Python编写【房价预测】模型----paddle
- 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
- 写文章比较正规的格式
- Protocol Buffer C++应用实例
- 如何在单元测试中测试异步函数,block回调这种
- Java集合框架(一)
- 华数联手海信升级互联网电视平台
- Java 中处理 Exception 的最佳实践
- rdkitpython | 多个化合物中挑选最大片段
- XRD进行定性分析时可以得到哪些有用信息
- 微信模板消息跳转小程序
- NSSM 制作 window 服务
- 惯性矩如何计算机械转动惯量,[转载]ug中的惯性矩与转动惯量
- Openwrt GCC 7.5编译sanitizer_internal_defs.h错误
- CPN:Cascaded Pyramid Network for Multi-Person Pose Estimation_及CPN实现
- 简单点击图片弹出video视频弹窗功能
- java用jimi.jar实现图片格式转换
- flash build 4.6 不能debug 报错 C:\WINDOWS\system32\Macromed\Flash\NPSWF32.dll
- 利用wifi对用户进行网络监控
- K空间的理解 倒空间