Użyj imagemagick do konwersji nieprzezroczystego koloru na alfa


10

Mam obraz z czarnym tłem z białymi elementami na pierwszym planie. Obraz ma wygładzanie, więc istnieją piksele „pośrednie”, które nie są ściśle czarne ani białe. Chciałbym, aby tło było przezroczyste. Znalazłem kilka linków, jak to zrobić za pomocą imagemagick, ale wszystkie ściśle zastępują jeden kolor (powiedzmy # 000000FF "z pełną alfą" # 00000000 "). Chcę zachować mieszanie ... więc jeśli jest szary piksel" # 777777FF ”, przekształciłby się w coś takiego jak„ # FFFFFF77 ”lub cokolwiek innego, co miałoby sens.

Czy ktoś wie jak to zrobić?

Odpowiedzi:


11

W tym artykule bardzo dobrze wyjaśniono, jak to zrobić:
http://www.imagemagick.org/Usage/masking/#alpha

Napisałem o tym mały artykuł na moim blogu:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html

Zasadniczo to, co chcesz zrobić, to utworzyć maskę, a następnie zastosować maskę do obrazu. Możesz to zrobić w dwóch krokach:

$ convert image.png -colorspace HSB -separate -negate image_mask.png
$ convert image.png -alpha Off \
>    image_mask.png -compose CopyOpacity -composite \
>    PNG32:image_alpha.png

Dzięki temu biel stanie się przezroczysta. Aby zmienić kolor na czarny, usuń -negateflagę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.