在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相关推荐

  1. Android的矩阵(一):ColorMatrix

    最近的学习过程中看到关于android色彩矩阵的内容,以前看到这部分内容,基本都是跳过的,没有认真细读. 自己给自己找的借口是: 1,大一学的矩阵内容早就忘的干干净净了,当时学的时候就很烦人,所以现在 ...

  2. Android色彩特效处理之色调、饱和度、亮度、ColorMatrix精炼详解

    一.前期基础知识储备 Bitmap(位图文件),扩展名可以是.bmp或者.dib.位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2.4.8.16. ...

  3. Color correction matrix(色彩矩阵)的学习思考

    Color correction matrix(色彩矩阵)的学习思考 转载于:Color correction matrix(色彩矩阵)的学习思考 一张好的色彩效果图像,是gamma,AWB,CCM, ...

  4. Android 颜色矩阵 滤镜 ColorMatrix (复古,蓝调,淡雅,传统,胶片,怀旧,浪漫等)你想要的滤镜

    首先我来给大家展示一下我的整体效果: 我们要用到的是ColorMatrix,ColorMatrix的三个方法: setRotate:调整色相 setSaturation:调整色彩饱和度 setScal ...

  5. android显示矩阵大小,关于android:显示代表灰度图像的双值矩阵

    我的问题是:我有一个字节数组,必须与ImageView一起显示. 这是我的代码: @Override protected void onCreate(Bundle savedInstanceState ...

  6. Android:滤镜效果ColorMatrix用法一

    点击这里看视频演示效果 简单说说 我们的实现的效果是类似photoshop,调节RGB三通道的比重.透明度.色彩饱和度 先回答这个问题,把大象放冰箱需要几步? 打开冰箱门 把大象放进去 关上冰箱门 给 ...

  7. 颜色矩阵ColorMatrix的使用

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 颜色矩阵是一个4x 5的矩阵,如下图: 让它和颜色分量RGBA相乘去改变RGBA的值 至于矩阵的运算就不多说了 ...

  8. Android之利用ColorMatrix进行图片的各种特效处理

    原图:效果1:效果2: 效果3:效果4: 查看官方的API,其中ColorMatrix的说明如下: 5x4 matrix for transforming the color+alpha compon ...

  9. ColorMatrixFilter 色彩矩阵滤镜

    包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter  BitmapFilter  Object 使用 ...

最新文章

  1. 1-2 用Python编写【房价预测】模型----paddle
  2. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  3. 写文章比较正规的格式
  4. Protocol Buffer C++应用实例
  5. 如何在单元测试中测试异步函数,block回调这种
  6. Java集合框架(一)
  7. 华数联手海信升级互联网电视平台
  8. Java 中处理 Exception 的最佳实践
  9. rdkitpython | 多个化合物中挑选最大片段
  10. XRD进行定性分析时可以得到哪些有用信息
  11. 微信模板消息跳转小程序
  12. NSSM 制作 window 服务
  13. 惯性矩如何计算机械转动惯量,[转载]ug中的惯性矩与转动惯量
  14. Openwrt GCC 7.5编译sanitizer_internal_defs.h错误
  15. CPN:Cascaded Pyramid Network for Multi-Person Pose Estimation_及CPN实现
  16. 简单点击图片弹出video视频弹窗功能
  17. java用jimi.jar实现图片格式转换
  18. flash build 4.6 不能debug 报错 C:\WINDOWS\system32\Macromed\Flash\NPSWF32.dll
  19. 利用wifi对用户进行网络监控
  20. K空间的理解 倒空间

热门文章

  1. 百家号情感领域和历史领域写什么
  2. 电子工程师是怎么练成的
  3. LQ0048 交换瓶子【水题】
  4. ExpRe[1] 笔记本分屏显示
  5. 信号处理——Hilbert端点效应浅析
  6. mysql模糊查询sal怎么写_MySQL条件查询
  7. 生成一个8到15位随机密码
  8. SVN地址发生改变,在小乌龟tortoiseSVN如何操作
  9. 供应商管理解决方案实战指南:打造高效供应链
  10. 逻辑斯蒂回归 逻辑回归_逻辑回归简介