2017-02-23 2 views
1

ImageMagick 7とPHP 5.6.30およびPECL Imagick 3.4.3を使用しています。PHP Imagickを使用してJPEG上に透過PNGをマージする

以下のコードを使用して、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

私はあなたが欲しい定数は 'COMPOSITE_OVER'であると信じています。 'COMPOSITE_COPYOPACITY'は、不透明度を保存している画像全体ではなく、画像から不透明度チャネルをコピーするだけです。 –

+0

COMPOSITE_OVERを使用すると、イメージは透明になりますが、不透明になりません。何か案は? – Reado

答えて

0

これは私のために働くようだ:

<?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'); 
?> 
関連する問題