本文概述
- 1.与背景上的次要图像进行比较
- 2.检索具有差异的透明图像
![如何在PHP中使用Imagick区分(比较)2个图像](http://img.readke.com/220521/122F44533-0.png)
文章图片
注意 为了提供图像的路径, 我们使用getcwd函数检索当前的工作目录, 因为你可能知道Imagick在相对路径下无法正常工作。相反, 你应该提供图像的绝对路径。
1.与背景上的次要图像进行比较 作为第一个示例, 我们将向你说明如何以最简单的方式区分2张图像。默认情况下, compareImages方法将在第一张图像上抽象地构成图像, 并自动突出显示与第一张红色图像不匹配的内容。
<
?php // Create an instance of every image to compare$image1 = new Imagick(getcwd(). "/example_a.png");
$image2 = new Imagick(getcwd(). "/example_b.png");
// Compare the Images$result = $image1->
compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
// The first item of the result array is an Imagick Image object// so convert it into its PNG format$result[0]->
setImageFormat("png");
// Output image to the browserheader("Content-Type: image/png");
echo $result[0];
先前的代码将在浏览器上生成以下响应:
![如何在PHP中使用Imagick区分(比较)2个图像](http://img.readke.com/220521/122F43447-1.png)
文章图片
2.检索具有差异的透明图像 如果你无法欣赏与Imagick基本示例生成的图像之间的差异, 那么你想改为将图像绘制在新的空白图像上。你可以依靠ImageMagick的逻辑来实现此目的, 特别是通过在命令行中使用compose参数。图像合成是以各种方式合并两个(只有两个)图像的过程。从使用Imagick合成图像的所有方式中, 我们将使用一种” 清除” 方法, 即Src。你可以使用setOption方法将此选项添加到图像。使用lowlight-color选项, 你可以指定结果图像的背景色, 然后最终读取原始图像(图像1)以与另一个图像进行比较。结果对象可用于检索结果图像。
查看以下示例:
<
?php // Create an empty Imagick object (to be able to set some options later)$image1 = new Imagick();
// Create$image2 = new Imagick(getcwd(). "/example_b.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 the original image (image 1)$image1->
readImage(getcwd(). "/example_a.png");
// Result will not have a background$result = $image1->
compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
$result[0]->
setImageFormat("png");
// Output image to the browserheader("Content-Type: image/png");
echo $result[0];
先前的代码将生成以下图像作为输出:
![如何在PHP中使用Imagick区分(比较)2个图像](http://img.readke.com/220521/122F44U4-2.png)
文章图片
如有例外 如果正确配置了Imagick, 则此过程通常不会失败。如果你的代码遇到以下异常:未捕获的异常ImagickException比较图像失败, 我们建议你验证图像的尺寸, 因为如果比较两个尺寸不相同的图像会产生错误(通常会发生错误)不应该发生, 就好像尺寸不一样一样, 微分过程应该突出显示图像的尺寸不一样。
【如何在PHP中使用Imagick区分(比较)2个图像】编码愉快!
推荐阅读
- 如何在WinForms中使用带有C#的SSH.NET(同步和异步)访问SFTP服务器
- 如何在WinForms中的CefSharp控件上向本机上下文菜单添加新项
- 如何在线执行TWIG代码
- COMP5911先进工程
- Android,PopupMenu.show()时添加窗口失败
- 当我通过gmail或shareIt共享apk并且没有启动时,Android应用程序崩溃了
- FacebookLoginSKK 4 Apple Mach-O链接器错误
- Apple Mach-O链接器(id)错误 - 链接器命令失败,退出代码为1(使用-v查看调用)C ++ SFML
- 绑定MvvmCross TextColor不适用于Android