Я пытаюсь воссоздать script, который использует команду ImageMagick "convert" для создания изображения. Но я хочу сделать то же самое в PHP, используя Imagick (версия 6.6.2-10).
Команда выглядит следующим образом:
convert A1.mpc A3.mpc A4.mpc -channel rgba -alpha on -virtual-pixel background -background none -define compose:args=312x26.6776 -compose displace -composite out.mpc
Я выяснил, что параметры означают следующее:
convert {background} {overlay} [{mask}] [-compose {method}] -composite {result}
PHP Imagick дает мне метод компоновки, но без параметра маски: http://www.php.net/manual/en/imagick.compositeimage.php
Я нашел еще один вопрос и пытается это сделать (но не приводит к тому же изображению):
// load images
$a1 = new Imagick('a1.png');
$a3 = new Imagick('a3.png');
$a4 = new Imagick('a4.png');
// mask the overlay
$a1->compositeImage($a4, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
// compose overlay to background
$a1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$a1->setImageBackgroundColor(new ImagickPixel('none'));
$a1->setOption('compose:args', '312x26.6776');
$a1->compositeImage($a3, Imagick::COMPOSITE_DISPLACE, 0, 0);
Итак, мой вопрос: правильно ли это создать изображение с помощью маски? Или что здесь не так?
Чтобы визуализировать то, что я хочу сделать, вот несколько исходных изображений:
входное изображение a1 (фон):
входное изображение a3 (наложение):
входное изображение a4 (маска):
Я хочу, чтобы результат был следующим:
Что создает мой PHP-код:
Спасибо заранее! Майкл