我是用php创建imagick的新手,我有一个问题: 我正在使用compareImages()函数比较两个图像。我使用的代码与documentation page中的代码相同:
<?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 compare.gif”),我想要一个如此命令所示的结果:
compare bag_frame1.gif bag_frame2.gif \
-compose Src compare_src.gif
有没有办法用imagick的compareImages()函数做到这一点?
由于
答案 0 :(得分: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);