After $ im->cropImage method, $ im->subImageMatch doesn't work, before using $ im->subImageMatch, use $ im->setImagePage(0, 0, 0, 0);
The sequence is as follows:
$ im->cropImage();
$ im->setImagePage (0, 0, 0, 0);
$ im->subImageMatch()
(PECL imagick 3 >= 3.3.0)
Imagick::subImageMatch — Description
$Imagick
, array &$offset
= ?, float &$similarity
= ?): ImagickBusca una subimagen en la imagen actual y devuelve una imagen de similitud tal que una ubicación que coincida exactamente es completamente blanca, mientras que si no coincide ningún píxel, negra, o, de otro modo, algún nivel de gris intermedio. También se pueden pasar los parámetros opcionales 'bestMatch' y 'similarity'. Después de llamar a la función, 'similarity' se establecerá a la «puntuación» de la similitud entre la subimagen y la posición coincidente de la imagen más grande, bestMatch contendrá un array asociativo con los elementos 'x', 'y', 'width' y 'height', los cuales describen la resión coincidente.
Imagick
offset
similarity
Una nueva imagen que muestra la cantidad de similitud de cada píxel.
Ejemplo #1 Imagick::subImageMatch()
<?php
function subImageMatch($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imagick2 = clone $imagick;
$imagick2->cropimage(40, 40, 250, 110);
$imagick2->vignetteimage(0, 1, 3, 3);
$similarity = null;
$bestMatch = null;
$comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity);
$comparison->setImageFormat('png');
header("Content-Type: image/png");
echo $imagick->getImageBlob();
}
?>
After $ im->cropImage method, $ im->subImageMatch doesn't work, before using $ im->subImageMatch, use $ im->setImagePage(0, 0, 0, 0);
The sequence is as follows:
$ im->cropImage();
$ im->setImagePage (0, 0, 0, 0);
$ im->subImageMatch()