我有几个小时试图在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中完成。
非常感谢!