[PHP] [Imagick]遮罩时保留图像透明度

时间:2018-07-13 08:42:28

标签: php image image-processing mask imagick

我在imagick(PHP)上工作,我想在图像上应用蒙版。基本上,它工作正常。但是当它必须处理主图像的透明性时,它不能按预期工作。让我解释一下。

源图像(SD)

Source image

蒙版图像(TPL)

Mask image

结果图像:((目标)

Result image :(

预期结果

Expected result

您可以在图像上看到源的透明度不在结果上...

所以,这是我的代码:

$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';

$base = new Imagick($sd);
$mask = new Imagick($tpl);

$base->compositeImage($mask, Imagick::COMPOSITE_COPYOPACITY, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);

我在CompositeImage()上尝试了多个选项,但是...找不到正确的选项。

在此先感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

这是解决方法:

$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';

$base = new Imagick($sd);
$mask = new Imagick($tpl);

$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);