2012-01-02 44 views
25

我对图像处理知之甚少,使用的术语更少,所以请耐心等待。如何使用Imagick合并并遮罩图像?

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

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

我真的不知道如何去做,所以任何帮助将不胜感激!

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

编辑:
要得到什么,我想实现的感觉,这里就是一个例子。

输入图像是这样的:
enter image description here
这是掩模图像,总是相同的

enter image description here
这是一个图象的一个例子,动态

enter image description here
这就是最终结果应该看起来像

+0

我真的需要一个答案这个问题。我的知识太有限,无法自己研究,所以我才开始赏金。如果这个问题需要改进,我会很乐意这样做。 – 2012-01-04 09:42:08

+0

会命令行版本帮助..? – 2012-01-04 09:46:19

+0

如果无法用API完成,我不得不求助于CLI,但我对API版本有很大的兴趣。 – 2012-01-04 09:50:47

回答

59

所以,最后,这应该做你需要的东西:

原图:

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; 
?> 

我希望这是正确的吧! 注意:在您的示例中,它看起来像缩减了基本图像,而我没有(我的目标仅仅是显示遮罩是如何完成的)。

+0

这看起来很有希望!我将创建一个蒙版图像并测试此代码。 – 2012-01-04 11:17:19

+0

是的,我猜想会发生一些缩放。我现在要测试新的代码。 – 2012-01-04 12:45:53

+1

太棒了,这几乎完美!一个问题是,原始图像中的任何透明度都会转换为黑色。有没有办法保存Alpha通道? – 2012-01-04 13:00:22

0

http://www.imagemagick.org/Usage/compose/#dstin应该做的伎俩,但你需要使用alpha通道的图像(这不应该是一个问题)。

编辑:在PHP中,您必须通过它(imagick::COMPOSITE_DSTIN)作为compositeimage中的参数。 Composite Operator Constants中的其他过滤器也可能对您有用。

+0

这并没有真正的帮助。当然,我已经找到了写作功能,但我不知道如何组合可用的工具来创建我需要的结果。 – 2012-01-04 09:52:09

1

您是否试过这个解决方案:https://stackoverflow.com/a/2351173/1093649

在您的服务器上运行它(使用正确的图像名称!),并让我们知道,谢谢。

注:学分去jspash

+0

我已经找到了一个,但它并没有真正做我想要的。答案的最终结果是,图像中的蓝色和黄色部分保持透明,而黑色边框显示“背景”图像。 – 2012-01-04 10:25:06

+0

太糟糕了,你可以把原始图像附加到你的文章?这样,我们可以更好地了解您从哪里开始。 – 2012-01-04 10:37:47

+0

我已经更新了样本输入和输出图像的问题。 – 2012-01-04 11:05:22

0

这种类型的掩蔽的正在使用许多不同的技术所示例中 ImageMagick的实例,缩略图,面具和油漆然而 http://www.imagemagick.org/Usage/thumbnails/#mask_paint

但是要注意,所述的掩模和覆盖图像的边缘应该不匹配 此非常重要,或者您可能会遇到最好避免边缘混叠效应的问题。

提取环的alpha蒙版,可以使用形态学运算符将其减薄到中心线,可用于为任意随机“环”形状生成蒙版。 ImageMagick的例子,骨骼变薄,剪枝 http://www.imagemagick.org/Usage/morphology/#thinning_skeleton

安东尼·蒂森 网站管理员的ImageMagick的例子,和开发人员的ImageMagick

PS:从Elfling不错的照片