【问题标题】:android drawable color matrixandroid可绘制颜色矩阵
【发布时间】:2012-01-24 09:29:58
【问题描述】:

我有 BitmapDrawable

我把它画在屏幕上

我有 4 个搜索栏(对比度、亮度、色调、饱和度)

我像这样改变 BitmapDrawable 的对比度:

public void setContrast(float mAngle) {
ColorMatrix matrix = new ColorMatrix();

    float contrast = mAngle / 180.f;

            float scale = contrast + 1.f;
    float translate = (-.5f * scale + .5f) * 255.f;

    float[] cntr = new float[] { scale, 0, 0, 0, translate, 0, scale, 0, 0, translate, 0, 0,
            scale, 0, translate, 0, 0, 0, 1, 0 };

            matrix.set(cntr);

    drawable.setColorFilter(new ColorMatrixColorFilter(matrix));
}

像这样改变 BitmapDrawable 的色调:

public void setHue(float value {
     ColorMatrix matrix = new ColorMatrix();  

 value = cleanValue(value, 180f) / 180f * (float) Math.PI;
    if (value == 0) {
        return;
    }
    float cosVal = (float) Math.cos(value);
    float sinVal = (float) Math.sin(value);
    float lumR = 0.213f;
    float lumG = 0.715f;
    float lumB = 0.072f;
    float[] fmatrix = new float[] { lumR + cosVal * (1 - lumR) + sinVal * (-lumR),
            lumG + cosVal * (-lumG) + sinVal * (-lumG),
            lumB + cosVal * (-lumB) + sinVal * (1 - lumB), 0, 0,
            lumR + cosVal * (-lumR) + sinVal * (0.143f),
            lumG + cosVal * (1 - lumG) + sinVal * (0.140f),
            lumB + cosVal * (-lumB) + sinVal * (-0.283f), 0, 0,
            lumR + cosVal * (-lumR) + sinVal * (-(1 - lumR)),
            lumG + cosVal * (-lumG) + sinVal * (lumG),
            lumB + cosVal * (1 - lumB) + sinVal * (lumB), 0, 0, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f,
            0f, 1f };

         matrix.postConcat(new ColorMatrix(fmatrix));

     drawable.setColorFilter(new ColorMatrixColorFilter(matrix));
    }

     protected float cleanValue(float p_val, float p_limit) {
       return Math.min(p_limit, Math.max(-p_limit, p_val));
}

他们工作得很好,但我想一起工作,有办法吗?

【问题讨论】:

  • 我尝试在更改对比度时保存该矩阵,并在更改色调后与保存的(对比度)矩阵相乘,但效果不佳

标签: java android image


【解决方案1】:

您需要连接颜色矩阵。查看 ColorMatrix API 中的 setConcat 函数。

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多