[PHP] [Imagick] Сохранение прозрачности изображения при маскировании

Я работаю над imagick (PHP) и хочу наложить маску на изображение. В принципе, работает нормально. Но это не работает так, как ожидалось, когда приходится иметь дело с прозрачностью на основном изображении. Позвольте мне объяснить это.

Исходное изображение (SD)

Исходное изображение

Изображение маски (TPL)

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

Результат изображения 🙁 (DEST)

Результат изображения :(

Ожидаемый результат

Ожидаемый результат

Как вы можете видеть на изображениях, прозрачность источника не зависит от результата …

Итак, вот мой код:

$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';

$base = new Imagick($sd);
$mask = new Imagick($tpl);

$base->compositeImage($mask, Imagick::COMPOSITE_COPYOPACITY, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);

Я попробовал несколько вариантов CompositImage (), но … не смог найти правильный (-ые).

Заранее спасибо за помощь 🙂

0

Решение

Вот решение:

$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';

$base = new Imagick($sd);
$mask = new Imagick($tpl);

$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);
0

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

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

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