ImageMagickコマンド「convert」を使用して画像を作成するスクリプトを再作成しようとしています。しかし、Imagick(バージョン6.6.2-10)を使用してPHPで同じことをしたいと思います。
コマンドは次のとおりです。
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はcomposeメソッドを提供しますが、マスクパラメーターはありません: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コードが作成するもの:
前もって感謝します!マイケル