我相信你想要的技術是合成兩個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);
我用不同的技術進行試驗,但沒有保持從非透明像素的alpha通道在原始圖像中在一天結束時。哪些工作,但低於我想要的標準。 您的解決方案非常完美。 – justynnuff
請記住這兩個alpha通道是基本的黑白圖像,可以[以不同的方式組合](http://www.imagemagick.org/Usage/compose/tables/)。 – emcconville