2015-09-13 5 views
1

Я хочу объединить прозрачный PNG в другое изображение, но граница PNG не изменится на прозрачную, как на необходимость.PHP: Imagick: Merge Transparent Image

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

enter image description here

ответ

2

Вам просто нужно установить фон прозрачным на оригинальном 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 включен.

$s2->setImageMatte(TRUE); 
+0

Спасибо! это уже работает! – dazzafact

Смежные вопросы