Формат типа 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
. Эти значения сами по себе не хранят цвет.