图像处理(4)

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

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

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

ColorMatrix cm = new ColorMatrix();

float brightness = -25;

cm.set(new float[] {

     1, 0, 0, 0, brightness,

     0, 1, 0, 0, brightness,

     0, 0, 1, 0, brightness,

     0, 0, 0, 1, 0 });

paint.setColorFilter(new ColorMatrixColorFilter(cm));

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

ColorMatrix cm = new ColorMatrix();

float contrast = 2;

float brightness = -25;

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

此操作的结果如图3-16所示。

读书导航