在android 中 封装了一个 ColorMatrix 类,专门用来进行图像的颜色处理。主要用到的还是其中的:色调,饱和度,和亮度。
·色调:
ColorMatrix hueMatrix = new ColorMatrix();
hueMatrix.setRotate(0,hue0);
hueMatrix.setRotate(1,hue1);
hueMatrix.setRotate(2,hue2);
其中 0,1,2分别代表RGB 三色,第二个参数就是要处理的RGB对应的数值。通过如上代码就可以设置一个图片的色调
饱和度:
ColorMatrix saturationMatrix = new ColorMatrix();
saturationMatrix.setSaturation(saturation);
其中 saturation 就是饱和度的数值。当这个值为0 的时候,就是灰色了。
亮度:
ColorMatrix lumMatrix = new ColorMatrix();
lumMatrix.setScale(lum,hue,saturation,1);
当这三个参数都是相同比例的时候图片就是白色的,当最后一位亮度为0 的时候就是黑色了。
通过ColorMatrix 的postConcat 方法进行 色调,饱和,亮度三种的混合,从而让图片的表达更丰富
//进行颜色混合
ColorMatrix imageMatrix = new ColorMatrix();
imageMatrix.postConcat(hueMatrix);
imageMatrix.postConcat(saturationMatrix);
imageMatrix.postConcat(lumMatrix);
具体的代码可以参考 网上现有的。
PART 2 : 分析Android 中的ColorMatrix.
图中
第一行代表 R
第二行达标 G
第三行代表 B
第四行代表 A
第五列 代表---ejot分别用来决定每个分量(R,G,B,A)中的offset偏移量,
初始矩阵
代表一个图片的原图效果。如果改变矩阵为如下:
就改变了R,G颜色的偏移量。
如果将原始矩阵改变为:
这就代表了改变了三原色 B 的值,整个图片就会偏蓝。这样就改变了颜色系数
我们如果需要改变这个矩阵的值,只需要有一个一维数组(mColorMatrix)将这些值按照[a,b,c,d...,s,t]的顺序存储下来,最终通过
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.set(mColorMatrix);
将mColorMatrix 设置给 colorMatrix.重新绘制图片。
网上代码一大堆,这里就不帖代码了。