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