色彩矩阵
要想实现Android图像特效处理需要了解色彩矩阵:
色彩处理需要三个方面调整图片颜色:
1、色调-------------物体传播的颜色
2、饱和度--------------------颜色的纯度
3、亮度-------------------颜色的相对明暗
Android系统封装了ColorMatrix类,通过这个类可以很简单通过修改矩阵值来修改图片颜色效果。
实例化:
ColorMatrix colorMatrix =newColorMatrix();
1、setRotate(int axis,float degree)设置色调,参数一用0、1、2代表red、Green、Blue三种颜色,参数二表示需要处理的值;
2、setSaturation(float sat)设置颜色饱和度,参数表示饱和度值,参数为0就是灰色头像了
3、setScale(foat lum,float lum,float lum,1)设置亮度,当lum为0时,图片就变为黑色。
4.postConcat()方法将矩阵效果混合,从而叠加处理效果。
效果展示:
附上代码:
**
* Created by MSI on 2017/6/21.
*/
public class GrayPicture {
Bitmap bitmap;
/**
*
*@param btm 需要变色的图片
*@param mHue 色调值,该出默认为0
*@param mStauration 饱和度值,该出默认为0
*@param mLum 亮度值,该出默认为1,亮度值为0则会出现黑屏
*/
public Bitmap setBitmap(Bitmap btm,floatmHue,floatmStauration ,floatmLum){
ColorMatrix colorMatrix =newColorMatrix();
colorMatrix.setRotate(0, mHue);
colorMatrix.setRotate(1, mHue);
colorMatrix.setRotate(2, mHue);
ColorMatrix colorMatrix1 =newColorMatrix();
colorMatrix1.setSaturation(mStauration);
ColorMatrix colorMatrix2 =newColorMatrix();
// colorMatrix2.setScale(mLum, mLum, mLum, 1);
colorMatrix2.setScale(1,1,1,1);
ColorMatrix colorMatrixs =newColorMatrix();
colorMatrixs.postConcat(colorMatrix);
colorMatrixs.postConcat(colorMatrix1);
colorMatrixs.postConcat(colorMatrix2);
bitmap= Bitmap.createBitmap(btm.getWidth(), btm.getHeight(), Bitmap.Config.ARGB_8888);
finalPaint paint =newPaint();
paint.setAntiAlias(true);
Canvas canvas =newCanvas(bitmap);
paint.setColorFilter(newColorMatrixColorFilter(colorMatrixs));
canvas.drawBitmap(btm,0,0, paint);
returnbitmap;
}
}