ARGB и ARGB_PRE одинаковы, когда альфа заполнена? - PullRequest
0 голосов
/ 26 октября 2011

Если мы возьмем, скажем, 32-битные изображения на пиксель, используя ARGB и ARGB_PRE (ARGB, но с предварительно умноженным альфа-каналом), будут ли значения идентичны, когда альфа полностью включена (то есть: нет прозрачности вообще)?

Например, если у меня есть пиксель ARGB со следующим значением: 0xFF808080 (это оттенок серого, без какой-либо прозрачности, потому что альфа имеет максимальное значение: 255), что бы это стало в ARGB_PRE

Как я могу узнать это сам? Достаточно ли создать одно буферизованное изображение, используя ARGB, а другое ARGB_PRE и setRGB (...) на обоих, а затем сравнить int , который я получу обратно?

Например, если я сделаю это:

    final BufferedImage bi1 = new BufferedImage(10,10,BufferedImage.TYPE_INT_ARGB);
    final BufferedImage bi2 = new BufferedImage(10,10,BufferedImage.TYPE_INT_ARGB_PRE);
    bi1.setRGB(0,0,0xFF808080);
    bi2.setRGB(0,0,0xFF808080);
    System.out.println("bi1: " + Integer.toHexString(bi1.getRGB(0, 0)));
    System.out.println("bi2: " + Integer.toHexString(bi2.getRGB(0, 0)));

Я возвращаю одно и то же значение для обоих, но это нормально, это то самое значение, которое я дал.

По сути, мой вопрос сводится к следующему: если изображения не имеют ни одного пикселя прозрачный, могу ли я генерировать одинаковые изображения, используя одинаковые значения в режимах ARGB и ARGB_PRE?

Или сформулировать так: если у меня нет прозрачного пикселя, совпадают ли ARGB и ARGB_PRE в основном?

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Да.Ваше понимание верно.

1 голос
/ 26 октября 2011

Предварительно умноженное альфа означает, что цвета, хранящиеся в данных изображения, умножаются на альфа, поэтому их не нужно умножать при компоновке (рисовании).это не меняет внешний вид изображения при рисовании, но то, как хранятся его данные ...

Кстати, если ваше изображение имеет альфа-значения только 255 (255 при составлении означает 1,0f), тогда результирующий цвет всегда будет 1 *цвет = цвет (без изменений)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...