I could be missing something - this is the code I’m using to test:
import java.awt.*;
import java.awt.image.BufferedImage;
public class CompatibleImageTest {
public static void main(String[] args) {
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = e.getDefaultScreenDevice();
GraphicsConfiguration[] configs = device.getConfigurations();
for (GraphicsConfiguration config : configs) {
BufferedImage image = config.createCompatibleImage(32, 32, Transparency.TRANSLUCENT);
System.out.println("TYPE_INT_ARGB: " + (BufferedImage.TYPE_INT_ARGB == image.getType()));
System.out.println("Premultiplied: " + image.getColorModel().isAlphaPremultiplied());
}
}
}
Maybe TYPE_INT_ARGB is intentional in this case? Because for 8-bit components, straight alpha is better for doing ColorConvertOp and such.
Either way, if all I’m doing is Porter-Duff compositing, it wouldn’t hurt to use TYPE_INT_ARGB_PRE, right? 