改变图像的对比度、亮度、整体色调等:
ColorMatrix:一个数字数组,可以对图像的像素进行操作,但是操作的事颜色值--每个像素的Red(红)、Green(绿)、Blue(蓝);
ColorMatrix cm=new ColorMatrix();
cm.set(new float[]{
2,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0
});
paint.setColorFilter(new ColorMatrixColorFilter(cm));
new float[]中的第一行包含单个像素的红色部分上发生的操作;第二行影响的绿色部分;第三行影响的蓝色部分;而最后一行操作像素的Alpha值。
新的红色值=2*128+0*128+0*128+0*0+0;(表示红色值翻了两倍)
新的蓝色值=0*128+1*128+0*128+0*0+0;
新的绿色值=0*128+0*128+1*128+0*0+0;
新的Alpha值=0*128+0*128+0*128+1*0+0;
改变对比度和亮度:
float contrast=2;
float brightness=-25;
ColorMatrix cm=new ColorMatrix();
cm.set(new float[]{
contrast,0,0,0,brightness,
0,contrast,0,0,brightness,
0,0,contrast,0,brightness,
0,0,0,contrast,0
});
paint.setColorFilter(new ColorMatrixColorFilter(cm));
改变饱和度:
ColorMatrix类有内置的方法可用于改变饱和度
cm.setSaturation(0.5f);//改变饱和度,传入大于1的数字将增加饱和度,传入0~1数字减少饱和度,0值将产生一幅灰度图像。