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

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

25
задан 0xCursor 15 October 2019 в 22:51
поделиться

2 ответа

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

Компоненты Red и Blue перевернуты в оригинальном ответе, поэтому правильный ответ будет:

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

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

44
ответ дан 28 November 2019 в 18:11
поделиться
    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

Вы это имеете в виду?

24
ответ дан 28 November 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: