Imagick::compareImages

(PECL imagick 2, PECL imagick 3)

Imagick::compareImages将图像与重建图像进行比较

描述

public Imagick::compareImages(Imagick $compare, int $metric): array

返回一个包含重建图像和图像之间差异的数组。

参数

compare

要比较的图像。

metric

提供有效的度量类型常量。参考此列表中的度量常量

返回值

返回一个包含重建图像和图像之间差异的数组。

错误/异常

在发生错误时抛出 ImagickException。

示例

示例 #1 使用 Imagick::compareImages()

比较图像并显示重建图像

<?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];

?>

添加备注

用户贡献的备注 2 条备注

info at celeste-design dot de
10 年前
如果您收到以下非描述性错误消息

Uncaught exception 'ImagickException' with message 'Compare images failed'

检查您的图片尺寸!我将一个 21x20 png 与一个 20x20 png 进行了比较,结果导致了该错误。花了很长时间才弄明白尺寸必须完全相同。
Tim K and Sam M @netflix
10 年前
*绝对误差* 度量未列为可用的度量常量。但是,如果您需要,仍然可以通过传递 AE 的内部常量定义(即 1)来使用它。当您希望使用所需的模糊因子进行比较时,这很有用。示例

<?php
// 初始化图像对象
$image1 = new imagick();
$image2 = new imagick();

// 设置模糊因子(必须在读取图像之前完成)
$image1->SetOption('fuzz', '2%');

// 读取图像
$image1->readImage("php_step29_actual.png");
$image2->readImage("php_step29_correct.png");

// 使用 METRIC=1(绝对误差)比较图像
$result = $image1->compareImages($image2, 1);

// 打印结果
echo "The image comparison 2% Fuzz factor is: " . $result[1];
?>
To Top