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

[PHP][Imagick]遮罩时保持图像透明度,php,image,image-processing,mask,imagick,Php,Image,Image Processing,Mask,Imagick,我使用imagick(PHP),我想在图像上应用一个掩码。基本上,它工作得很好。但当它必须处理主图像的透明度时,它并没有像预期的那样工作。让我解释一下 源图像(SD) 遮罩图像(TPL) 结果图像:((目的地) 预期结果 正如您在图像上看到的,源的透明度不在结果上 这是我的代码: $sd = 'tiger.png'; $tpl = 'tpl.png'; $dest = 'tiger_cut.png'; $base = new Imagick($sd); $mask = new Imag

我使用imagick(PHP),我想在图像上应用一个掩码。基本上,它工作得很好。但当它必须处理主图像的透明度时,它并没有像预期的那样工作。让我解释一下

源图像(SD)

遮罩图像(TPL)

结果图像:((目的地)

预期结果

正如您在图像上看到的,源的透明度不在结果上

这是我的代码:

$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()上尝试了几个选项,但…找不到正确的选项

提前感谢您的帮助:)

以下是解决方案:

$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);