Android实现制作灰色图片

色彩矩阵

要想实现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()方法将矩阵效果混合,从而叠加处理效果。

效果展示:


Android实现制作灰色图片_第1张图片
原图


Android实现制作灰色图片_第2张图片
代码重新生成后


附上代码:

**

* 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;

}

}

你可能感兴趣的:(Android实现制作灰色图片)