Как преобразовать getRGB (x, y) целого пикселя в цвет (r, g, b, a) в Java? - PullRequest
24 голосов
/ 28 марта 2010

У меня есть целочисленный пиксель, полученный от getRGB(x,y), но я не имею ни малейшего представления о том, как преобразовать его в RGBA. Например, -16726016 должно быть Color(0,200,0,255). Любые советы?

Ответы [ 2 ]

43 голосов
/ 28 марта 2010

Если я угадаю правильно, вы получите целое число без знака вида 0xAARRGGBB, поэтому

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

извлечет компоненты цвета. Тем не менее, быстрый взгляд на документы говорит о том, что вы можете просто сделать

Color c = new Color(argb);

или

Color c = new Color(argb, true);

если вам нужен альфа-компонент в Color.

UPDATE

Красные и синие компоненты инвертированы в исходном ответе, поэтому правильный ответ будет:

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

обновлено также в первом фрагменте кода

24 голосов
/ 28 марта 2010
    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());

распечатывает:

0
200
0
255

Это то, что вы имеете в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...