이미지서치시 해당 이미지를 모두 찾아야할 때 쓰면 좋은 스크립트입니다.
테스트는 다운받은 압축파일에서 SearchTable.bmp 파일을 그림판으로 열어서 해보세요.
다운로드 링크를 못거네요 ㄷㄷ
원문 사이트에서 스크립트와 이미지 파일을 받아주세요.
함수 : ImageSearch_All(imageFile, sizex,sizey, x1,y1, x2,y2,
margin=0, searchCount=0)
함수사용법 설명 :
#SingleInstance Force
F12::
;이미지 파일명은 SearchSample.bmp
sample =
SearchSample.bmp
;12,12는 찾을 이미지의 가로와 세로 크기입니다. 그 뒤 0,0,600,600
은 검색영역입니다.
list := ImageSearch_All(sample, 12,12, 0,0,
600,600)
;list 값이 없으면 검색된 이미지가 없는 경우입니다.
if !list
MsgBox, 이미지 검색 실패
;그외 리스트값이 있을시 리스트에서 순서대로 검색된 이미지 좌표들을
불러옵니다.
else
{
for, i, o in list
{
MouseMove, % o.x, % o.y
ToolTip, % A_index
sleep, 400
}
MsgBox % list.MaxIndex() "개의 동일이미지 검색됨"
}
return
;동일이미지 모두 찾기
;searchCount : 0=모두찾기 ,
양의정수=해당갯수만큼찾기
ImageSearch_All(imageFile, sizex,sizey, x1,y1, x2,y2,
margin=0, searchCount=0, _o="")
{
static list
if
_o<>_r
list := []
x1_org := x1
loop
{
if
(y1+sizey-1>y2)
break
ImageSearch, sx,sy, x1,y1, x2,y2,
*%margin% %imageFile%
if ErrorLevel=2
{
MsgBox,
%imageFile% file not found.
ExitApp
}
if
ErrorLevel=1
break
list.Insert(Object("x",sx, "y",sy))
if
(0<searchCount) and (list.MaxIndex()=searchCount)
break
y1 :=
sy , x1 := sx + sizex
if (x1+sizex-1>x2)
{
y1++ , x1
:= x1_org
continue
}
%A_ThisFunc%(imageFile, sizex,sizey,
x1,y1, x2,y1+sizey-1, margin, searchCount, "_r")
y1++ , x1 := x1_org
}
return list.Maxindex()? list:""
}