在使用 $im->cropImage 方法之後,$im->subImageMatch 無法運作,在使用 $im->subImageMatch 之前,請使用 $im->setImagePage(0, 0, 0, 0);
順序如下
$im->cropImage();
$im->setImagePage(0, 0, 0, 0);
$im->subImageMatch()
(PECL imagick 3 >= 3.3.0)
Imagick::subImageMatch — 在目前影像中搜尋子影像並傳回相似度影像
$Imagick
, array &$offset
= ?, float &$similarity
= ?): Imagick在目前影像中搜尋子影像並傳回相似度影像,使得精確匹配的位置完全為白色,若沒有像素匹配則為黑色,否則為介於兩者之間的某個灰階。您也可以傳入選用的參數 bestMatch 和 similarity。呼叫此函式後,similarity 將會設定為子影像與較大影像中匹配位置之間的相似度「分數」,bestMatch 將會包含一個關聯陣列,其元素 x、y、width 和 height 會描述匹配的區域。
Imagick
offset
similarity
一個顯示每個像素相似度的新影像。
範例 #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();
}
?>
在使用 $im->cropImage 方法之後,$im->subImageMatch 無法運作,在使用 $im->subImageMatch 之前,請使用 $im->setImagePage(0, 0, 0, 0);
順序如下
$im->cropImage();
$im->setImagePage(0, 0, 0, 0);
$im->subImageMatch()