Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Если я угадаю правильно, вы получите целое число без знака в форме 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);

если вы хотите альфа-компонент в цвете, а также.

ОБНОВИТЬ

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

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

обновлен также в первом куске кода

Ответ 2

    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

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