daz*_*act 2 php imagemagick imagick
我想将透明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);
Run Code Online (Sandbox Code Playgroud)
您只需将原始 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);
Run Code Online (Sandbox Code Playgroud)
如果仍然存在问题,可能值得确保启用 PNG 的 Alpha 通道。
$s2->setImageMatte(TRUE);
Run Code Online (Sandbox Code Playgroud)