Ooookay. После множества поисков в Google и прочтения большего количества руководства по ImageMagick, чем я на самом деле забочусь, вот ответ. Учитывая, что у вас есть изображение в градациях серого с именем source.png
, вот мои команды.
Чтобы сделать черные пиксели прозрачными и сохранить белые пиксели такими, какие они есть, выполните следующую команду:
convert source.png -alpha copy -fx '#fff' result.png
Вместо этого, чтобы сделать белые пиксели прозрачными , сохраняя черный как есть, используйте:
convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png
Давайте объясним эту последнюю команду немного более подробно:
convert
- команда ImageMagic (одна из нескольких)
source.png
- Исходное изображение в оттенках серого.
-alpha copy
- копировать содержимое предыдущего файла в альфа-канал.
-channel alpha
- укажите, что только следующие операторы должны влиять на альфа-канал.
-negate
- инвертировать альфа-канал (из-за предыдущего -chanel alpha
не повлияет на любую другую часть изображения).
+channel
- укажите, что только следующие операторы должны влиять на цветовые каналы и больше не изменять альфа-канал. (Это значение по умолчанию, и поэтому нам не нужно предоставлять его в первом, более простом примере.)
-fx '#000'
- заменить содержимое цветного канала черными пикселями. (Из-за +channel
альфа-канал не будет затронут).
Очень важно включить эту последнюю опцию -fx
, иначе все полупрозрачные пиксели в сгенерированном изображении сохранят цвета. (Поскольку эти пиксели полупрозрачны, это может быть неочевидно, но конечный результат не соответствует ожиданиям.)
Я нашел список опций ImageMagick весьма полезным.