ここ数時間、JPGの背景の上に透明な背景のPNGロゴを取得しようとしました。私はいくつかの方法といくつかのグローバル変数を試しましたが、希望する結果を得ることができないようです。
"最初の試み":
$overlay = new Imagick('overlay.png');
$image = new Imagick('background.jpg');
$image->compositeImage($overlay, Imagick::COMPOSITE_DEFAULT, 10, 10);
$image->writeImage('background.jpg'); //replace original background
$overlay->destroy();
$image->destroy();
ご覧のとおり、ジャガーのロゴはすべて黒です。
「2回目の試み」
$overlay = new Imagick('overlay.png');
$image = new Imagick('background.jpg');
$image->setImageColorspace($overlay->getImageColorspace() );
$image->compositeImage($overlay, Imagick::COMPOSITE_DEFAULT, 10, 10);
$image->writeImage('background.jpg'); //replace original background
$overlay->destroy();
$image->destroy();
これはジャガーのロゴのように見えますが、背景がめちゃくちゃになっています。
Imagick :: setImageMatteを試してみて、オーバーレイを白い背景に追加しようとしましたが(透明な背景が必要だと思いました)、それでも画像が正しく表示されません。上記の2つのスニペットの他の多くのバリエーションを試しましたが、それらはすべてPNGを完全にまたは部分的に黒くしているようです。
私は何が欠けているか、間違っていますか?誰かが私に正しい方向にナッジを与えることができますか?これはPHPで行う必要があることに注意してください。
どうもありがとうございます!