Question

Voici la situation, j'ai un SeekBar et je veux, quand je glisse, à modifier la teinte d'une image qui est dans une ImageView.Toutes les choses que j'ai vu sur la modification de la teinte nécessitent l'utilisation d'un ColorMatrix, mais je ne sais pas comment associer une image à une matrice de couleurs.Des Suggestions?

Était-ce utile?

La solution

    public static void adjustHue(ColorMatrix cm, float value)
    {
        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[] mat = 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 };
        cm.postConcat(new ColorMatrix(mat));
    }

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


-------

while drawing from canvas ... create an object of paint and ... set... 
ColorMatrix mat = new ColorMatrix();`
adjustHue(mat, 110);
paint.setColorFilter(new ColorMatrixColorFilter(mat));


----
canvas.draw(bmp, 0,0,paint);

Autres conseils

Il y a un exemple ici qui dessine une image bitmap en niveaux de gris.

http://www.mail-archive.com/android-developers@googlegroups.com/msg38890.html

Il suffit de remplacer cm.setSaturation(0); avec cm.setRotate(int axis, float degrees);.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top