使用透明PNG作为剪辑蒙版

10

能否使用GD或Imagick将以下图像:

image1

应用以下蒙版:

mask

并使其变成这样:

image2

是否可以使用预先创建的透明度图像蒙版来遮罩一张图片?我知道可以使用形状来蒙版一个图像,但不确定如何处理预先创建的 alpha 透明度图像。:s


我刚刚进行了一些搜索,显然我可以使用Wideimage(http://wideimage.sourceforge.net/)库来完成这个任务。但是除了使用完整的库来实现这个功能之外,是否还有更简单的方法? - Jedi
3个回答

16

使用 Imagick 和 ImageMagick 版本 > 6 (我不知道它是否适用于旧版本):

// Set image path
$path = '/path/to/your/images/';

// Create new objects from png's
$dude = new Imagick($path . 'dude.png');
$mask = new Imagick($path . 'dudemask.png');

// IMPORTANT! Must activate the opacity channel
// See: http://www.php.net/manual/en/function.imagick-setimagematte.php
$dude->setImageMatte(1); 

// Create composite of two images using DSTIN
// See: http://www.imagemagick.org/Usage/compose/#dstin
$dude->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0);

// Write image to a file.
$dude->writeImage($path . 'newimage.png');

// And/or output image directly to browser
header("Content-Type: image/png");
echo $dude;

1
我觉得你需要使用imagealphablending。我用它来添加水印,而且我相信它能够达到你需要的效果。

1
不,我不认为它会这样做。我没有合并图像,我是使用一张图像来遮盖现有的图像。结果图像是alpha透明的。 - Jedi
3
将你的口罩反转,让中心变成透明,边缘渐变为白色。然后将图像裁剪或缩放到口罩大小。当然,这需要假设有一个白色背景。 如果白色不可行,您是否使用黑白? 如果是这样,请选择一种奇特的颜色(比如亮粉色或彩绿色,如果有颜色也可能有效)。制作真彩图像和口罩,然后将该调色板颜色设置为透明。 所以,是的,我认为它会起作用,只需要从各个角度尝试一下。 - Cryophallion

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接