我相信您想要的技术是合成两个 Alpha 通道,然后复制结果作为原始图像的新 Alpha 通道。比如……
$drawing = new Imagick('drawing.png');
$mask = new Imagick('mask.png');
// Extract original alpha channel from drawing.
$base_opacity = clone $drawing;
$base_opacity->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
// Composite both alpha channels
$base_opacity->compositeImage($mask, Imagick::COMPOSITE_MULTIPLY, 0 ,0);
// Copy new `base_opacity` as alpha channel
$drawing->compositeImage($base_opacity, Imagick::COMPOSITE_COPYOPACITY, 0 ,0);
这是上述行的分步预览。
// Extract original alpha channel from drawing.
$base_opacity = clone $drawing;
$base_opacity->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
// Composite both alpha channels
$base_opacity->compositeImage($mask, Imagick::COMPOSITE_MULTIPLY, 0 ,0);
// Copy new `base_opacity` as alpha channel
$drawing->compositeImage($base_opacity, Imagick::COMPOSITE_COPYOPACITY, 0 ,0);