
Imagick::subImageMatch 함수는 이미지 내의 패턴을 찾을 때 사용하는 함수입니다. 이 함수는 패턴을 찾은 후 그 위치를 반환하지 않습니다. 대신, 패턴이 이미지 내에서 몇 번 발견되는지에 대한 정보를 반환합니다.
패턴 매칭에 사용되는 알고리즘은 Levenshtein 알고리즘입니다. 이 알고리즘은 두 문자열 사이의 편집 거리를 계산하는 알고리즘으로, 패턴 매칭에 사용됩니다.
매칭 결과에 영향을 미치는 옵션은 다음과 같습니다.
- `SIMILARITY_THRESHOLD` : 패턴과 이미지의 유사도 임계값입니다. 이 값이 0보다 크면 패턴이 이미지 내에서 발견됩니다.
- `SUB_IMAGE_THRESHOLD` : 패턴이 이미지 내에서 발견된 후, 패턴과 이미지의 유사도 임계값입니다. 이 값이 0보다 크면 패턴이 이미지 내에서 발견됩니다.
위 코드에서 `$result`에는 패턴이 이미지 내에서 발견된 횟수가 저장됩니다. `$result`은 `ImagickPixelIterator` 객체로 반환되며, 이 객체를 통해 패턴이 이미지 내에서 발견된 위치를 확인할 수 있습니다.
예를 들어, 다음과 같이 코드를 수정하여 패턴이 이미지 내에서 발견된 위치를 확인할 수 있습니다.
#hostingforum.kr
php
$imagick = new Imagick('원본이미지.png');
$pattern = new Imagick('패턴이미지.png');
$result = $imagick->subImageMatch($pattern, 0, 0);
if ($result > 0) {
echo "패턴이 이미지 내에서 발견되었습니다.n";
foreach ($imagick as $image) {
$image->writeImage('결과이미지.png');
}
} else {
echo "패턴이 이미지 내에서 발견되지 않았습니다.n";
}
이 코드에서는 패턴이 이미지 내에서 발견되면, 결과 이미지를 생성하고 표시합니다. 패턴이 이미지 내에서 발견되지 않으면, 패턴이 이미지 내에서 발견되지 않았습니다. 라고 표시합니다.
2025-06-19 13:05