如果我们使用 ARGB 和 ARGB_PRE(ARGB 但带有预乘 alpha)拍摄每像素 32 位的图片,当 alpha 完全打开(即:根本没有透明度)时,这些值是否相同?
例如,如果我有一个具有以下值的 ARGB 像素:0xFF808080(这是一个阴影灰色,没有任何透明度,因为 alpha 处于最大值: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 是否基本相同?