Are there other combinations?
Yes. But they don’t really matter (for game development at the time of writing). Eg 16bit grayscale or 48bit rgb… or 64bit rgba :o
The BITMASK type would be the ones with either fully
opaque pixels or fully transparent, correct?
Yes.
If the source uses a range of Alphas, then which ones get
set to opaque?
Depends on the programm, used for converting. I guess the majority would just trash the alpha information all together.
However, it’s also possible to use a RGBA indexed mode. Eg if you want 4 alpha “shades” for all colors you would end up with 64 different colors (each color needs index entries for 0%, 33%, 66% and 100% alpha). But that one is rarely used and, as I said, most tools don’t even support that (I’m wondering if ImageIO would handle that correctly).
Well, it’s easier to put the alpha stuff into a seperate image. Eg one opaque 256color (8bit) image and one 16 “color” (4bit grayscale) image for alpha. But… y’know… that would be somewhat slow in Java2D right now, because it’s more than simple bitmask stuff.
Just use gif for those images with (bitmask) transparency and convert em at the end to png with PNGOUT. Then compare sizes and pick the smaller one [usually png] 