imagemagick — Php Imagick — градиентное смешивание изображений с прозрачностью

Я пытаюсь сделать эффект градиентного смешивания двух изображений (или более).
Но проблема в том, что мои изображения имеют прозрачность.

Я должен изображения:
Изображение для смешивания слева
Изображение для смешивания справа

Я хочу смешать эти две картинки так, чтобы красная была слева, а синяя справа, с эффектом градиентного смешивания.

До сих пор я применял маску градиента к синему, например:
Синяя маска изображения

Синяя маска изображения

… и положи его поверх красного. Это прекрасно работает для фотографий, но когда изображения имеют прозрачность, я получил это:

Градиент смешивания тест

Итак, здесь мы можем видеть градиентное смешивание синего изображения, но мы можем видеть красное через прозрачную синюю рамку. 🙁

Я не могу найти решение для создания хорошего эффекта градиентного смешения, который работает на прозрачных изображениях. Я использую imagemagick (с PHP), но я не могу найти решение даже в Gimp или Photoshop …

Вы знаете хороший способ сделать это?

Спасибо !

PS: Ресурсы:
Красная картинка
Красная картинка

Синяя картинка
Синяя картинка

Маска черная и белая
Маска синей картины (черная & белый)

Маска прозрачная и белая
Маска синего рисунка (прозрачная & белый)

1

Решение

Вы знаете хороший способ сделать это?

Я бы предложил изолировать альфа-каналы от базового изображения, а затем объединить два изображения с маской.

# Disable alpha channel, and composite without alpha
convert red.png -alpha off red_base.png
convert blue.png -alpha off blue_base.png
convert blue_base.png black_mask.png -alpha Off \
-compose CopyOpacity -composite \
red_base.png -compose DstOver -composite base_out.png

Базовый композит

Повторите с извлеченным альфа-каналом.

convert red.png -alpha extract red_mask.png
convert blue.png -alpha extract blue_mask.png
convert blue_mask.png black_mask.png -alpha Off \
-compose CopyOpacity -composite \
red_mask.png -compose DstOver -composite mask_out.png

Альфа-канал композитный

И, наконец, примените сгенерированную маску в качестве нового альфа-канала.

convert base_out.png  mask_out.png -alpha Off \
-compose CopyOpacity -composite output.png

Финиальный композит

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]