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

 

posted on 2014-08-25 10:34  宁静致远,一览众山小  阅读(544)  评论(0编辑  收藏  举报

导航