在使用 `$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()`