文字

Imagick::compareImages

(PECL imagick 2.0.0)

Imagick::compareImagesCompares an image to a reconstructed image

说明

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

Returns an array containing a reconstructed image and the difference between images.

参数

compare

An image to compare to.

metric

Provide a valid metric type constant. Refer to this list of metric constants.

返回值

成功时返回 TRUE

错误/异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::compareImages() :

Compare images and display the reconstructed image

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

?>

用户评论:

[#1] info at celeste-design dot de [2014-08-12 14:58:11]

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.

[#2] Tim K and Sam M @netflix [2014-05-01 18:09:50]

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($image21);

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

上一篇: 下一篇: