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 — Recherche une sous-image dans l'image courante et renvoie une image de similarité
$Imagick
, array &$offset
= ?, float &$similarity
= ?): ImagickRecherche une sous-image dans l'image courante et renvoie une image de similarité telle qu'un emplacement de correspondance exacte est complètement blanc et si aucun des pixels ne correspond, noir, sinon un certain niveau de gris entre les deux. Vous pouvez également passer les paramètres facultatifs bestMatch et similarity. Après avoir appelé la fonction, similarity sera défini sur le 'score' de la similarité entre la sous-image et la position correspondante dans l'image plus grande, bestMatch contiendra un tableau associatif avec les éléments x, y, width, height qui décrivent la région correspondante.
Imagick
offset
similarity
Une nouvelle image qui affiche la quantité de similarité à chaque pixel.
Exemple #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()