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

[PHP][Imagick] Conserve image transparency while masking

我在 imagick (PHP) 上工作,我想在图像上应用蒙版。基本上,它工作正常。但是当它必须处理主图像的透明度时,它并没有像预期的那样工作。我来解释一下。

源图像 (SD)

遮罩图像 (TPL)

结果图片:( (DEST)

预期结果

正如您在图像上看到的那样,源的透明度并未出现在结果中...

所以,这是我的代码:

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