Frage Konvertiere int-Farbe in int-Komponenten


Ich erhalte Pixelfarbe nach

int color = image.getRGB(x,y);

dann möchte ich rote, grüne, blaue Komponenten getrennt erwerben. Wie geht das? Vielleicht mit einer Bitmaske?

int green = color&0x00ff00;

anscheinend nicht funktioniert ... :(


6
2017-12-05 19:06


Ursprung


Antworten:


Um Farbkomponenten zu erhalten, können Sie Folgendes verwenden:

import android.graphics.Color;

        int r = Color.red(intColor);
        int g = Color.green(intColor);
        int b = Color.blue(intColor);
        int a = Color.alpha(intColor);

27
2018-03-15 09:25



int value = image.getRGB(x,y);
R = (byte)(value & 0x000000FF);
G = (byte)((value & 0x0000FF00) >> 8);
B = (byte)((value & 0x00FF0000) >> 16);
A = (byte)((value & 0xFF000000) >> 24);

Möglicherweise müssen Sie das R, A oder B umdrehen.


4
2018-01-23 15:39



Sie haben vergessen, das Byte nach rechts zu verschieben:

int green = (color & 0x00ff00) >> 8;

3
2017-12-05 19:09



Sie können verwenden Color Konstrukteur und übergeben Sie die angegebene Ganzzahl und hasalpha=true:

Color color = new Color(image.getRGB(x,y), true);

getRGB Gibt die Farbe des Typs zurück TYP_INT_ARGB was bedeutet, dass es einen Alpha-Kanal hat.


2
2017-12-05 19:13