3.4.2 改变对比度和亮度

    可以通过增加或减少颜色值来调整图像的亮度和对比度。

    以下代码将对每个颜色通道的强度加倍,其将影响到图像的亮度和对比度

1                 ColorMatrix cm=new ColorMatrix();

2                 float contrast=2;

3                 cm.set(new float[]{

4                     contrast,0,0,0,0,

5                     0,contrast,0,0,0,

6                     0,0,contrast,0,0,

7                     0,0,0,1,0

8                 });

9                 paint.setColorFilter(new ColorMatrixColorFilter(cm));

    在这个示例中,两个效果是相连接的。如果只想增加对比度而不增加亮度,那么实际上必须降低亮度来补偿在颜色强度方面的增加。

    通常,当调整亮度时,对每种颜色只使用矩阵的最后一列会更加简单。这仅仅是添加到颜色值,而无需乘以已有的颜色。

    因此,为了降低亮度,可以使用矩阵代码如下。

1                 ColorMatrix cm=new ColorMatrix();

2                 float brighrness=-25;

3                 cm.set(new float[]{

4                     1,0,0,0,brighrness,

5                     0,1,0,0,brighrness,

6                     0,0,1,0,brighrness,

7                     0,0,0,1,0

8                 });

9                 paint.setColorFilter(new ColorMatrixColorFilter(cm));

   将这两种转换合在一起将产生如下代码。

 1                 ColorMatrix cm=new ColorMatrix();

 2                 float contrast=2;

 3                 float brighrness=2;

 4                 cm.set(new float[]{

 5                     contrast,0,0,0,brighrness,

 6                     0,contrast,0,0,brighrness,

 7                     0,0,contrast,0,brighrness,

 8                     0,0,0,1,0

 9                 });

10                 paint.setColorFilter(new ColorMatrixColorFilter(cm));

 

你可能感兴趣的:(改变)