web-dev-qa-db-fra.com

Comment convertir un pixel entier getRGB (x, y) en couleur (r, g, b, a) en Java?

J'ai le pixel entier que j'ai obtenu de getRGB(x,y), mais je n'ai aucune idée sur la façon de le convertir au format RGBA. Par exemple, -16726016 Doit être Color(0,200,0,255). Des conseils?

25

Si je devine bien, ce que vous obtenez en retour est un entier non signé de la forme 0xAARRGGBB, alors

int b = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int r = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;

extrairait les composants de couleur. Cependant, un rapide coup d'œil à la docs dit que vous pouvez simplement faire

Color c = new Color(argb);

ou

Color c = new Color(argb, true);

si vous souhaitez également le composant alpha dans la couleur.

[~ # ~] mise à jour [~ # ~]

Les composants rouge et bleu sont inversés dans la réponse d'origine, donc la bonne réponse sera:

int r = (argb>>16)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>0)&0xFF;

mis à jour également dans le premier morceau de code

44
AKX
    Color c = new Color(-16726016, true);
    System.out.println(c.getRed());
    System.out.println(c.getGreen());
    System.out.println(c.getBlue());
    System.out.println(c.getAlpha());

imprime:

0
200
0
255

C'est ça que tu veux dire?

25
laher