Как сохранить прозрачность с помощью -compose и -flatten в GraphicsMagick

У меня есть серия изображений PNG с прозрачным фоном, которые я хочу наложить на целевое изображение PNG, которое также имеет прозрачный фон. Для аргумента скажем, что серия изображений:

  • Исходные изображения: img1.png, img2.png, img3.png
  • Изображение назначения: dest.png.

Поскольку я хочу наложить все изображения одновременно, я собираюсь использовать команду convert с переключателем compose следующим образом:

gm convert -compose Atop dest.png img1.png img2.png img3.png -flatten output.png

Кажется достаточно простым, но проблема в том, что output.png теряет прозрачность, и я не знаю, как сохранить его включенным. Если я использую переключатель -background, я могу установить для того, что раньше было прозрачностью, любой цвет, который я хочу, но я не могу заставить его вернуться к прозрачности.

Да, я могу впоследствии позвонить:

gm convert -transparency black ouput.png output2.png

но тогда любой черный цвет на реальном изображении также становится прозрачным.

Любая помощь здесь?


person Hoho-0714    schedule 30.11.2013    source источник


Ответы (1)


Я столкнулся с той же проблемой, и я сделал пару вещей, чтобы заставить ее работать.

Вы должны получить то, что хотите, если измените свою команду на:

gm convert xc:transparent -compose Over img1.png img2.png img3.png -mosaic dest.png

Вы можете использовать Atop из Over в зависимости от функциональности, которую вы хотите получить от метода компоновки.

Использование mosaic вместо flatten в сочетании с аргументом xc:transparent заставило его сохранить прозрачность и создать изображение с прозрачностью.

person Pineechio    schedule 16.12.2013