Android ColorMatrix setSaturation()是否支持大于一的值?

查看Android文档,ColorMatrix setSaturation()方法说:

设置矩阵以影响颜色的饱和度。 值为0将颜色映射为灰度。 1是身份。

我试图提高饱和度(HSL / HSV方面)以获得更强烈的色彩,所以我通过了1.6版,似乎可行。 我遇到Android版面shadowRadius值小于1的设备特定问题,那么使用此参数出现这些类型的问题并超出指定范围会有危险吗?


饱和度的范围确实在0和1之间。但让我们看一下setSaturation()方法的代码。 (Android是开源的):

public void setSaturation(float sat) {
    reset();
    float[] m = mArray;

    final float invSat = 1 - sat; //<---------invSat will be negative if sat bigger than 1
    final float R = 0.213f * invSat;
    final float G = 0.715f * invSat;
    final float B = 0.072f * invSat;

    m[0] = R + sat; m[1] = G;       m[2] = B;
    m[5] = R;       m[6] = G + sat; m[7] = B;
    m[10] = R;      m[11] = G;      m[12] = B + sat;
}

我们关心的部分代码被指出。 正如你所看到的,该方法将接受你的输入,并从1中减去它。如果你输入的值大于1,这将导致invSat为负值,正如你所看到的,它也可能导致更大的问题。

链接地址: http://www.djcxy.com/p/29191.html

上一篇: Does Android ColorMatrix setSaturation() support values greater than one?

下一篇: PIXI.js use colormatrix not for all child objects in stage