我有幾個小時試圖在JPG背景上獲得帶有透明背景的PNG徽標。我已經嘗試了幾種方法並使用了幾種全局變量,但我似乎無法獲得我想要的結果。使用Imagick在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();
正如你可以看到,捷豹標誌是全黑的。
「第二次嘗試」
$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試了又試,添加overlay to a white background(認爲我的確需要有一個透明背景),仍然會無法正常顯示圖像。我已經嘗試了上述2個片段的許多其他變體,但它們似乎都使PNG完全或部分變黑。
我在想什麼或做錯了什麼?任何人都可以給我一個正確的方向推動嗎? 請注意,這需要在PHP中完成。
非常感謝!