2014-11-25 125 views
1

我是新使用imagick与PHP,我有一个问题: 我比较两个图像与compareImages()函数。我使用相同的代码作为documentation page与Imagick比较两幅图像后删除背景

<?php 

$image1 = new imagick("image1.png"); 
$image2 = new imagick("image2.png"); 

$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR); 
$result[0]->setImageFormat("png"); 

header("Content-Type: image/png"); 
echo $result[0]; 

?> 

此代码工作的权利,但结果图像具有与有点混浊的原始图像的背景。

我一直在寻找,我发现我想要的结果,但与ImageMagick的命令: http://www.imagemagick.org/Usage/compare/

我现在的结果是一样的第一个命令的图像(“比较bag_frame1.gif bag_frame2.gif比较。 GIF“),我想在这个命令显示的一样的结果:

compare bag_frame1.gif bag_frame2.gif \ 
     -compose Src compare_src.gif 

是否存在与compareImages这样做()imagick功能的方法吗?

感谢

回答

2

你需要阅读的第一张图像之前使用Imagick::SetOption

<?php 
$image1 = new imagick(); // Init empty object 
$image2 = new imagick("image2.png"); 
// Set Lowlight (resulting background) to transparent, not "original image with a bit of opacity" 
$image1->setOption('lowlight-color','transparent'); 
// Switch the default compose operator to Src, like in example 
$image1->setOption('compose', 'Src'); 
// Now read image 
$image1->readImage("image1.png"); 
// Result will not have a background 
$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR); 
+0

它的工作! :)谢谢 – Sogeking 2014-11-25 14:32:59

+0

如果我将Lowlight设置为透明,我会得到黑色背景,而不是透明的1。 – dardo82 2017-03-13 09:31:05