我在最近几个小时试图在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,10); $image->writeImage('background.jpg'); //replace original background $overlay->destroy(); $image->destroy();
这一款Jaguar标志看起来应该是这样,但背景现在都搞砸了.
我已尝试使用Imagick::setImageMatte并尝试添加overlay to a white background(我认为我确实需要透明背景)并且仍然无法正确显示图像.我已经尝试了上述2个片段的许多其他变体,但它们似乎都使PNG完全或部分黑色.
我错过了什么或做错了什么?任何人都可以给我一个正确方向的推动吗?
请注意,这需要在PHP中完成.
非常感谢你!
我是个白痴!结果我忘记将图像从CMYK转换为RGB. 对于将来可能会遇到这种情况的人,请从我的无能中学习!
原文链接:https://www.f2er.com/php/135785.html