如何使用 Imagick 合并和遮罩图像?

2022-08-30 16:23:05

我对图像处理知之甚少,对使用的术语甚至更少,所以请耐心等待。

基本上,我想将两个图像合并在一起,其中一个图像将充当掩码。该图像看起来像这样:
Example
蓝色和黄色背景在现实中都是透明的。

此图像被用作常规照片的遮罩。照片中“伸出”圆圈的部分需要“裁剪”(使其不可见),而内部仍然可见。
因此,蓝色区域中的所有内容都是不可见的,黄色区域中的所有内容都是可见的。

老实说,我不知道该怎么做,所以任何帮助将不胜感激!

编辑:
我使用的是 Imagick 的 API 版本,而不是命令行版本

编辑:
为了了解我想要实现的目标,这里有一个例子。

因此,输入图像是:
enter image description here
这是掩膜图像,始终相同

enter image description here
这是一个图片示例,动态

enter image description here
这就是最终结果应该是什么样子的


答案 1

因此,最后,这应该可以满足您的需要:

原始图像:

http://i.stack.imgur.com/b7seR.png

不透明度蒙版:

enter image description here

覆盖:

http://i.stack.imgur.com/3ulkM.png

输出:

enter image description here

代码:

<?php
$base = new Imagick('U0R4F.png');
$mask = new Imagick('mask.png');
$over = new Imagick('3ulkM.png');

// Setting same size for all images
$base->resizeImage(274, 275, Imagick::FILTER_LANCZOS, 1);

// Copy opacity mask
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);

// Add overlay
$base->compositeImage($over, Imagick::COMPOSITE_DEFAULT, 0, 0);

$base->writeImage('output.png');
header("Content-Type: image/png");

echo $base;
?>

我希望是现在!注意:在您的示例中,看起来您缩小了基本图像,但我没有这样做(我的目标只是展示如何完成遮罩)。


答案 2

您是否尝试过此处的此解决方案,如 描述: https://stackoverflow.com/a/2351173/1093649

在您的服务器中运行此命令(使用正确的映像名称!),并告诉我们,谢谢。

nb : 学分去 jspash


推荐