使用PHP Imagick将透明PNG合并到JPEG上

时间:2017-02-23 19:22:44

标签: php opacity imagick

我正在使用ImageMagick 7以及PHP 5.6.30和PECL Imagick 3.4.3。

使用下面的代码,我试图在JPEG图像上叠加50%透明PNG。结果是PNG图像叠加但没有透明度。

有什么想法吗?

<?php
    $im = new Imagick('base.jpg');
    $wm = new Imagick('watermark.png');
    $wm->setImageAlpha(0.5);
    $im->compositeImage($wm, Imagick::COMPOSITE_COPYOPACITY, 0, 0);
    $im->writeImage('final.jpg');
?>

1 个答案:

答案 0 :(得分:1)

这似乎对我有用:

<?php
    $im = new Imagick('base.jpg');
    $wm = new Imagick();
    $wm->setBackgroundColor(new ImagickPixel('transparent'));
    $wm->readImage('watermark.png');
    $wm->setImageFormat('png32');
    $wm->setImageAlpha(0.5);
    $im->compositeImage($wm, Imagick::COMPOSITE_OVER, 0, 0);
    $im->writeImage('final.jpg');
?>