Paint画笔(一)
1、Paint-滤镜
1、LightingColorFilter滤镜
/**
LightingColorFilter(@ColorInt int mul, @ColorInt int add)
mul和add都是和颜色值格式形同的int值,其中mul用来和目标像素相乘,add用来和目标像素相加;
* R' = R * mul.R / 0xff + add.R
* G' = G * mul.G / 0xff + add.G
* B' = B * mul.B / 0xff + add.B
*/
//红色去除掉
LightingColorFilter lighting = new LightingColorFilter(0x00ffff,0x000000);
mPaint.setColorFilter(lighting);
canvas.drawBitmap(mBitmap, 0,0, mPaint);
//原始图片效果
LightingColorFilter lighting = new LightingColorFilter(0xffffff,0x000000);
mPaint.setColorFilter(lighting);
canvas.drawBitmap(mBitmap, 0,0, mPaint);
//绿色更亮
LightingColorFilter lighting = new LightingColorFilter(0xffffff,0x003000);
mPaint.setColorFilter(lighting);
canvas.drawBitmap(mBitmap, 0,0, mPaint);
2、PorterDuffColorFilter滤镜
/**
* PorterDuffColorFilter(@ColorInt int color, @NonNull PorterDuff.Mode mode)
* color,具体的颜色值,例如Color.RED
* mode,指定PorterDuff.Mode的图层混合模式
*/
PorterDuffColorFilter porterDuffColorFilter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.DARKEN);
mPaint.setColorFilter(porterDuffColorFilter);
canvas.drawBitmap(mBitmap, 100, 0, mPaint);

2-1.png
3、ColorMatrixColorFilter滤镜
//第一种方式
float[] colorMatrix = {
2,0,0,0,0, //red
0,1,0,0,0, //green
0,0,1,0,0, //blue
0,0,0,1,0 //alpha
};
ColorMatrixColorFilter mColorMatrixColorFilter = new ColorMatrixColorFilter(colorMatrix);
mPaint.setColorFilter(mColorMatrixColorFilter);
canvas.drawBitmap(mBitmap, 100, 0, mPaint);
//第二种方式
ColorMatrix cm = new ColorMatrix();
//亮度调节
cm.setScale(2,1,1,1);
//饱和度调节0-无色彩, 1- 默认效果, >1饱和度加强
cm.setSaturation(2);
//色调调节
cm.setRotate(0, 45);
ColorMatrixColorFilter mColorMatrixColorFilter = new ColorMatrixColorFilter(cm);
mPaint.setColorFilter(mColorMatrixColorFilter);
canvas.drawBitmap(mBitmap, 100, 0, mPaint);
网友评论