我花了几个小时尝试在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();
正如你所看到的,Jaguar的标志全部是黑色的。
“第二次尝试”
$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();
这个图片里Jaguar的标志看起来很正常,但是它的背景现在乱七八糟的。
我已经尝试了Imagick::setImageMatte并尝试添加了一个覆盖的白色背景(虽然我以为需要一个透明背景),但仍无法正确显示图像。 我尝试了以上两个片段的许多其他变化,但它们似乎都会使PNG完全或部分变成黑色。
我错过了什么或做错了什么? 有谁能给我指点一下方向?请注意,这需要在PHP中完成。
非常感谢!