Jak mam przynosząc obrazy w moim programie, chcę sprawdzić, czy:Ustal, czy Alpha kanał jest używany w obrazie
- mają alfa-kanałowy
- jeśli to jest kanał alfa wykorzystywane
# 1 jest dość prosta z użyciem Image.IsAlphaPixelFormat
. Jednak w przypadku # 2, poza zapętlaniem się każdego pojedynczego piksela, czy istnieje prosty sposób określenia, czy co najmniej jeden z pikseli ma użyty kanał alfa (tj. Ustawiony na inną wartość niż 255
)? Wszystko, czego potrzebuję, to boolean, a następnie zdecyduję, czy zapisać go do wersji 32-bitowej czy 24-bitowej.
UPDATE: Odkryłem, że ImageFlags.HasTranslucent powinny zapewnić mi z czego szukam - niestety, to nie działa w ogóle. Na przykład pliki PNG z formatami pikseli, które mają co najmniej kanał alfa 66 (półprzezroczysty) nadal raportują False
(użycie: if((img.Flags & ImageFlags.HasTranslucent) == 4) ...;
). Przetestowałem na wszystkich typach obrazów, w tym .bmp, które mają wartość alfa> 0 i < 255 i nadal zgłasza False
. Ktoś z tego korzysta i wie, czy działa nawet w GDI +?
Połączyłeś się z lokalną kopią pomocy, a nie z wersją online. – ChrisF
Stany pomocy "Określa, że dane pikseli mają wartości alfa inne niż 0 (przezroczyste) i 255 (nieprzezroczyste)."co nie jest dokładnie tym, czego chcesz, jeśli chcesz powiedzieć prawdę również z 0. – ChrisF
Dziwne, nie mam lokalnej kopii pomocy. Tak, tak," HasTranslucent "dostanie mnie dość daleko, ale nie 100% ponieważ nadal będę potrzebował wartości 0. –