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ć?

iskrzący
źródło

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ę.

RaHorakhti
źródło