我对图像处理知之甚少,甚至使用的术语也少,所以请耐心等待。
基本上,我想将两个图像合并在一起,其中一个图像将作为遮罩。该图像看起来像这样:
蓝色和黄色背景在现实中都是透明的。
此图像用作常规照片的遮罩。照片中“伸出”圆圈的部分需要“裁剪”(不可见),同时内部仍然可见。
因此,蓝色区域中的所有内容都是隐形的,黄色区域中的所有内容都是可见的。
老实说,我不知道如何去做,所以任何帮助都会非常感激!
修改
我使用的是Imagick的API版本,而不是命令行版本
修改
为了了解我想要实现的目标,这里有一个例子。
输入图像因此:
这是掩模图像,总是相同的
这是动态图片的一个例子
这就是最终结果应该是什么样的
答案 0 :(得分:62)
所以,最后,这应该做你需要的:
原始图片:
不透明蒙版:
<强>重叠:强>
<强>输出:强>
代码:
<?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;
?>
我希望现在就是这样! 注意:在您的示例中,您看起来缩小了基本图像,我没有(我的目标只是显示屏蔽是如何完成的)。
答案 1 :(得分:1)
您是否按照以下所述尝试此解决方案:https://stackoverflow.com/a/2351173/1093649?
在你的服务器中运行它(使用正确的图像名称!),并告诉我们,谢谢。
nb:credit to jspash
答案 2 :(得分:0)
http://www.imagemagick.org/Usage/compose/#dstin应该可以解决这个问题,但你需要使用带有alpha通道的图像(这应该不是问题)。
编辑:在PHP中,您必须将其作为compositeimage中的参数传递(imagick::COMPOSITE_DSTIN
)。 Composite Operator Constants中的其他过滤器也可能对您有用。
答案 3 :(得分:0)
这种类型的掩蔽是使用许多不同的技术来实例化的 ImageMagick示例,缩略图,蒙版和绘画 http://www.imagemagick.org/Usage/thumbnails/#mask_paint
但请注意,覆盖图像的遮蔽和边缘应该不匹配 这很重要,否则你可能会遇到最好避免的边缘别名效应问题。
提取环的alpha蒙版,可以使用形态学运算符将其细化到中心线,可用于为任何随机“环”形状生成蒙版。 ImageMagick示例,细化的骷髅和修剪 http://www.imagemagick.org/Usage/morphology/#thinning_skeleton
安东尼蒂森 ImageMagick示例的Web Master和ImageMagick的DeveloperPS:来自Elfling的漂亮照片