php - Imagick:使用 mask 组合

标签 php transformation mask imagick composite

我尝试重新创建一个脚本,该脚本使用 ImageMagick 命令“转换”来合成图像。但我想在 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

我找到了 another question并尝试这个(但不会产生相同的图像):

// 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);

所以我的问题是:这是使用 mask 合成图像的正确方法吗?或者这里有什么问题?

为了帮助可视化我想做什么,这里有一些输入图像:

输入图像a1(背景):

a1

输入图像a3(覆盖):

a3

输入图像a4(蒙版):

a4

我想要的结果是:

correct output

我的 php 代码创建了什么:

wrong output

提前致谢! 迈克尔

最佳答案

尝试使用 compositeImage 方法和 Imagick::COMPOSITE_COPYOPACITY

关于php - Imagick:使用 mask 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232551/

相关文章:

php - Bootstrap 多项选择

PHP/MYSQL : data isn't appearing on the table

r - 在 R 中按组自定义规范化

python - 取带有掩码元素的 numpy ndarray 的平均值

c++ - 带着面具搜索

php - 使用 jQuery 的警报消息

php - 使用 Eclipse 调试 PHP 脚本

java - Java 8 中的 Regex-replace-with-function-evaluation 等效于什么?

r - ggplot2 上具有多个解释变量的模型的预测线

python - 使用OpenCV的图像蒙版(Python)