As I'm bringing in images into my program, I want to determine if:
- they have an alpha-channel
- if that alpha-channel is used
#1 is simple enough with using Image.IsAlphaPixelFormat
. For #2 though, other than looping through every single pixel, is there a simple way I can determine if at least one of the pixels has an alpha channel that is used (i.e. set to some other value than 255
)? All I need back is a boolean and then I'll make determination as to whether to save it out to 32-bit or 24-bit.
UPDATE: I have discovered that ImageFlags.HasTranslucent should provide me with what I'm looking for - unfortunately, it doesn't work at all. For example, PNGs with pixel formats that have at least alpha channel of 66 (semi-transparent) continue to report False
(Usage: if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;
). I've tested on all types of images, including .bmp that have an alpha value >0 and <255 and it still reports False
. Anyone ever use this and know if it even works in GDI+?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…