当我将图片导入我的程序时,我想确定以下几点:
- 它们是否有alpha通道
- 如果使用了该alpha通道
#1 使用Image.IsAlphaPixelFormat
就足够简单了。 对于#2,除了循环遍历每个像素之外,是否有一种简单的方法可以确定至少有一个像素使用了alpha通道(即设置为与255
不同的某些其他值)? 我只需要返回一个布尔值,然后根据情况决定是否将其保存为32位或24位。
更新: 我发现ImageFlags.HasTranslucent应该提供我所需的功能,但不幸的是,它根本不起作用。例如,具有至少66(半透明)alpha通道的像素格式的PNG文件仍然报告False
(用法:if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;
)。 我已经测试了所有类型的图像,包括具有大于0且小于255的alpha值的.bmp图像,但仍然报告False
。 有没有人使用过它并知道它在GDI +中是否起作用?
HasTranslucent
会让我走得很远,但不是100%,因为我仍然需要0值。 - Todd Main