Domanda

Ecco la situazione, ho una barra di ricerca e voglio, quando lo faccio scivolare, per cambiare la tonalità di un'immagine che si trova in una vigilanza di immagini. Tutte le cose che ho visto sul cambiamento della tonalità richiedono l'uso di una colormatrice, ma non so come mettere in relazione una bitmap con una matrice di colori. Suggerimenti?

È stato utile?

Soluzione

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

Altri suggerimenti

C'è un esempio qui che disegna una bitmap in scala di grigi.

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

Basta sostituire cm.setSaturation(0); insieme a cm.setRotate(int axis, float degrees);.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top