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