Используйте imagemagick для преобразования непрозрачного цвета в альфа


10

У меня есть изображение с черным фоном с белыми элементами на переднем плане. Изображение имеет сглаживание, поэтому есть промежуточные пиксели, которые не являются строго черными или белыми. Я хотел бы сделать фон прозрачным. Я нашел несколько ссылок о том, как это сделать с помощью imagemagick, но все они строго заменяют один цвет (скажем, # 000000FF "на полную альфу" # 00000000 "). Я хочу сохранить смешивание ... так что если есть серый пиксель" # 777777FF ", это будет преобразовано во что-то вроде" # FFFFFF77 "или что-то еще, что будет иметь смысл.

Кто-нибудь знает как это сделать?

Ответы:


11

Эта статья очень хорошо объясняет, как это сделать:
http://www.imagemagick.org/Usage/masking/#alpha

Я написал небольшую статью об этом в своем блоге:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html

По сути, вы хотите создать маску, а затем применить маску к изображению. Вы можете сделать это в два этапа:

$ 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

Это сделает белый цвет прозрачным. Чтобы сделать черный цвет прозрачным, снимите -negateфлажок.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.