Php 使用Imagick在JPG上覆盖PNG

Php 使用Imagick在JPG上覆盖PNG,php,imagemagick,imagick,Php,Imagemagick,Imagick,在过去的几个小时里,我尝试在JPG背景上加上一个透明背景的PNG徽标。我已经尝试了几种方法,也尝试了几种全球性的方法,但我似乎无法得到我想要的结果 “第一次尝试”: $overlay = new Imagick('overlay.png'); $image = new Imagick('background.jpg'); $image->compositeImage($overlay, Imagick::COMPOSITE_DEFAULT, 10, 10); $image->wri

在过去的几个小时里,我尝试在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段的许多其他变体,但它们似乎都使PNG完全或部分变黑

我错过了什么或做错了什么?谁能给我一个正确的方向? 请注意,这需要在PHP中完成


多谢各位

我是个大白痴!结果我忘了把图像从CMYK转换成RGB。
对于将来可能遇到这种情况的人,请从我的无能中学习

我试图在另一个png的顶部覆盖一个透明的png。我用的这句台词来自

但我也遇到了同样的问题。覆盖层仅为黑色。把它改成这个似乎可以改变颜色

$src1->compositeImage($src2, Imagick::COMPOSITE_DEFAULT, 0, 0);

如何从CMYK转换为RGB?你能粘贴代码吗?
$src1->compositeImage($src2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);
$src1->compositeImage($src2, Imagick::COMPOSITE_DEFAULT, 0, 0);