(PECL imagick 2, PECL imagick 3)

Imagick::compareImagesCompare une image avec une image reconstituée


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

Retourne un tableau contenant l'image reconstituée et les différences entre les images.

Liste de paramètres


Une image à comparer.


Une constante de type de métrique. Voyez la liste des constantes de métriques.

Valeurs de retour

Retourne un tableau contenant une image reconstruite et la différence entre les images.

Erreurs / Exceptions

Lance une exception ImagickException si une erreur survient.


Exemple #1 Exemple avec Imagick::compareImages()

Compare des images et affiche l'image reconstituée


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

$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);

header("Content-Type: image/png");


add a note

User Contributed Notes 2 notes

info at celeste-design dot de
9 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.
Tim K and Sam M @netflix
9 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:

// 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

// 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];
To Top