Если мы возьмем, скажем, 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 в основном?