PHP:Imagick:合并透明图像

PHP: Imagick: Merge Transparent Image

我想将一个透明的PNG合并到另一个图片中,但是PNG的边框不会随心所欲地变成透明的。

    <?
    $s1=    new Imagick('img.jpg');
    $s2=    new Imagick('img2.jpg');
    $s2->setImageFormat ('png');
    $s2->vignetteImage(20, 20, 40, - 20); 
    $s2->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    $s1->compositeImage($s2, Imagick::COMPOSITE_DEFAULT,120,120, Imagick::CHANNEL_ALPHA);

您只需将原始 JPEG 图片的背景设置为透明即可。

<?
$s1=    new Imagick('img.jpg');
$s2=    new Imagick('img2.jpg');
$s2->setImageFormat ('png');
$s2->setImageBackgroundColor("transparent"); // <= Here
$s2->vignetteImage(20, 20, 40, - 20); 
$s2->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$s1->compositeImage($s2, Imagick::COMPOSITE_DEFAULT,120,120, Imagick::CHANNEL_ALPHA);

如果仍有问题,可能值得确保 PNG 的 Alpha 通道已启用。

$s2->setImageMatte(TRUE);