我试图重新创建一个使用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代码创建的结果:
提前感谢! Michael