2017-02-23 2 views
1

J'utilise ImageMagick 7 avec PHP 5.6.30 et PECL Imagick 3.4.3. En utilisant le code ci-dessous, j'essaye de superposer un PNG transparent à 50% sur une image JPEG. Le résultat est l'image PNG superposée mais sans la transparence.Fusionner PNG transparent sur un JPEG en utilisant PHP Imagick

Des idées?

<?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

je crois que la constante que vous voulez est 'COMPOSITE_OVER'. 'COMPOSITE_COPYOPACITY' ne doit copier que le canal d'opacité de l'image, et non l'opacité entière de préservation de l'image. –

+0

L'utilisation de COMPOSITE_OVER rend l'image transparente mais sans l'opacité. Des idées? – Reado

Répondre

0

Cela semble fonctionner pour moi:

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