У меня есть целочисленный пиксель, от которого я добрался getRGB(x,y)
, но у меня нет подсказки о том, как преобразовать ее в формат RGBA. Например, -16726016
должен быть Color(0,200,0,255)
. Какие-либо подсказки?
Если я правильно догадываюсь, то вы получите беззнаковое целое число вида 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;
обновлено также в первом куске кода
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
Вы это имеете в виду?