Определите, используется ли альфа-канал в изображении
Поскольку я добавляю изображения в свою программу, я хочу определить:
у них есть альфа-каналесли этот альфа-канал используется# 1 достаточно просто с использованиемImage.IsAlphaPixelFormat
, За# 2 хотя, кроме циклического прохождения каждого отдельного пикселя, есть простой способ, которым я могу определить, имеет ли хотя бы один из пикселей альфа-канал, который используется (то есть установлено какое-то другое значение, кроме255
)? Все, что мне нужно, - это логическое значение, и тогда я приму решение, сохранять ли его в 32-битном или 24-битном формате.
ОБНОВИТЬ: Я обнаружил, чтоImageFlags.HasTranslucent должен предоставить мне то, что я ищу - к сожалению, это не работает вообще. Например, PNG с форматами пикселей, которые имеют по крайней мере альфа-канал 66 (полупрозрачный), продолжают сообщатьFalse
(Использование:if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;
). Я проверил на всех типах изображений, включая .bmp, которые имеют альфа-значение> 0 и <255, и он все еще сообщаетFalse
, Кто-нибудь когда-нибудь использовал это и знает, работает ли он даже в GDI +?