PHPのお勉強!

PHP TOP

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

?>

add a note

User Contributed Notes 2 notes

up
6
info at celeste-design dot de
10 years ago
If you get the following non-descriptive error message:

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

Check your picture dimensions! i compared a 21x20 png to a 20x20 png which resulted in that error. Took me forever to figure out that the dimensions have to be exactly the same.
up
2
Tim K and Sam M @netflix
10 years ago
The *Absolute Error* metric is not listed as an available metric constant. However, you can still use it if needed by passing the internal constant definition for AE which is 1. This is useful when you wish to compare using a desired fuzz factor. Example:

<?php
// init the image objects
$image1 = new imagick();
$image2 = new imagick();

// set the fuzz factor (must be done BEFORE reading in the images)
$image1->SetOption('fuzz', '2%');

// read in the images
$image1->readImage("php_step29_actual.png");
$image2->readImage("php_step29_correct.png");

// compare the images using METRIC=1 (Absolute Error)
$result = $image1->compareImages($image2, 1);

// print out the result
echo "The image comparison 2% Fuzz factor is: " . $result[1];
?>