Формат типа int RGB и типа INT ARGB

может ли кто-нибудь объяснить мне, как java хранит цвет в TYPE_INT_RGB и TYPE_INT_ARGB ?
Правильно ли работают эти строки кода для вычисления красного, зеленого и синего ?

int red= (RGB>>16)&255;
int green= (RGB>>8)&255;
int blue= (RGB)&255;

а как насчет TYPE_INT_ARGB ? Как я могу получить красный, зеленый и синий от TYPE_INT_ARGB?

3 ответов


на TYPE_INT_ARGB представляет цвет как int (4 байта) с альфа-каналом в битах 24-31, Красные каналы в 16-23, зеленый в 8-15 и синий в 0-7.

на TYPE_INT_RGB представляет цвет как int (4 байта) int таким же образом TYPE_INT_ARGB, но альфа-канал игнорируется (или биты 24-31 равны 0).

посмотрите javadoc java.ОУ.Цвет и java.ОУ.изображение.Bufferedimage не.


вы правы для TYPE_INT_RGB. Эквивалентный код TYPE_INT_ARGB будет:

int rgb = rgbColor.getRGB(); //always returns TYPE_INT_ARGB
int alpha = (rgb >> 24) & 0xFF;
int red =   (rgb >> 16) & 0xFF;
int green = (rgb >>  8) & 0xFF;
int blue =  (rgb      ) & 0xFF;

написание элементов цвета для байтов от наиболее значимых до наименее значимых, вы получаете ARGB, следовательно, имя.


это постоянные значения, которые указывают цветовую модель экземпляра BufferedImage. Эти значения сами по себе не хранят цвет.