기존 픽셀서치 명령에 몇가지 유용한 옵션을 추가하였습니다.
PixelSearch , OutVarX, OutVarY, X1, Y1, X2, Y2, ColorID [, Variation, option, OutVarExceptColor]
[결과값]
ErrorLevel = 0 : 검색성공
ErrorLevel = 1 : 검색실패
ErrorLevel = 2 : 오류
[기존변수]
OutVarX, OutVarY : 검색성공시 픽셀 좌표
X1, Y1, X2, Y2, : 검색대상 영역 (*WH 옵션시 X2, Y2 값은 가로 및 세로 크기값)
ColorID : 검색할 컬러값 (기본 컬러 포맷은 GRB)
Variation : 컬러 공차값으로 0~255 사이의 숫자
[추가변수]
OutVarExceptColor : *Except 또는 *ExceptLine 옵션 사용시에만 유효한 변수이며 검색된 예외컬러가 존재하는 픽셀 좌표의 컬러값을 반환
[기존옵션 - 되도록 * 기호를 붙인 *Fast, *RGB 같은 사용 방식을 권장]
*Fast : 오토잇에서 업그레이드된 검색방식을 사용하기 위한 옵션
*RGB : 입력된 검색컬러를 RGB 컬러값으로 적용
[추가옵션 - 추가옵션 사용시 *Fast 옵션 자동 사용]
*WH : X2,Y2값을 가로 및 세로 사이즈 값으로 사용
*Scan(RB|BR|LT|TL|RT|TR|LB|BL) : 스캔방향 설정 (기본스캔방향은 RB)
*Except : 입력 컬러값을 제외한 컬러값이 존재하는 픽셀좌표 반환
*ExceptLine : 입력 컬러값이 존재하지 않는 스캔라인의 첫번째 픽셀좌표 반환
*Target(File|HBmp|HBmpNotDel)xx : 이미지서치 대상을 화면이 아닌 파일이나 HBITMAP 핸들로 사용
- 검색대상이 파일일때 < > 기호로 파일경로를 둘러싸 줄것 : *TargetFile<filePath>
*Scan 옵션에 대한 세부설명
이미지서치나 픽셀서치에서 *ScanXX 옵션으로 설정 가능하며 검색시작점과 검색방향의 우선순위를 지정하는데 사용합니다. 오토핫키의 기본 스캔방향은 왼쪽상단에서 오른쪽으로 그리고 아래로 진행하는 방식이며 *ScanRB 옵션과 같습니다.
아래 스샷의 스캔 진행방향은 1번이 선두 스캔방향이며 2번이 후순위 스캔방향입니다.
*Except 옵션
픽셀서치에서 *Except 옵션으로 설정 가능하며 Blue 컬러가 입력컬러인 경우 Blue 컬러를 제외한 다른 컬러값이 발견된 픽셀 좌표를 반환
- 위의 샘플픽셀배열에서 기본스캔방향일 경우 반환 좌표는 x=8 , y=0
*ExceptLine 옵션
픽셀서치에서 *ExceptLine 옵션으로 설정 가능하며 Blue 컬러가 입력컬러인 경우 Blue 컬러가 존재하지 않는 스캔라인의 첫번째 픽셀 좌표를 반환
- 위의 샘플픽셀배열에서 기본스캔방향일 경우 반환 좌표는 x=0 , y=1
Test.ahk 파일을 다운로드한 'Ahk+ 전용 AutoHotkey.exe 파일' 위에 드래그해서 실행하세요.
PixelSearch_Test(Search_ColorBlock).zip
이 스크립트는 특정컬러블럭(적색)의 좌상단 좌표를 모두 찾는 스크립트입니다.
화면검색용으로 바꾸시려면 PixelSearch 명령 라인의 *TargetFile<%searchFile%> 옵션을 전부 제거해 주시고 startx, starty, endx, endy 변수에 화면좌표를 설정해 주시면 됩니다.
<테스트 스크립트>
result := {}
searchColor := 0x241CED ;찾을 컬러값 = 적색
searchFile = SearchTable.bmp
ImageGet,,,,,, searchFile,, imgSize ;이미지사이즈 얻기
startx := 0
starty := 0
endx := imgSize.width-1
endy := imgSize.height-1
cury := starty
loop
{
;y축좌표가 범위를 벗어난 경우 루프 종료
if (cury>endy)
break
curx := startx
loop
{
;검색할 컬러 찾기
PixelSearch, sx,sy, curx,cury,endx,cury, searchColor,, *TargetFile<%searchFile%>
if !ErrorLevel
{
;윗픽셀과 같은색이 아닐경우 다른블럭으로 인식
PixelGetColor, color, sx,sy-1, *TargetFile<%searchFile%>
if (color<>searchColor)
{
obj := {x:sx, y:sy}
result.Insert(obj)
}
curx := sx + 1
cury := sy
;검색할 컬러 이외의 다른 컬러 찾기 (*Except 옵션)
PixelSearch, sx,sy, curx,cury,endx,cury, searchColor,, *Except *TargetFile<%searchFile%>
if !ErrorLevel
curx := sx
else
break
}
else
break
}
++cury
}
;검색된 좌표목록 출력
text = 픽셀서치로 특정컬러블럭의 좌표 찾기 (여기서는 '적색' 블럭)`n`n
for k, v in result
text .= k " : " v.x "," v.y "`n"
MsgBox,,, % text
'AHK+ 명령어' 카테고리의 다른 글
오토핫키+ URLDownloadToVar 명령어 추가 (0) | 2015.10.01 |
---|---|
오토핫키+ ImageListSearch 명령어 추가 (4) | 2015.09.29 |
오토핫키+ ImageCompare 명령어 추가 (8) | 2015.09.19 |
오토핫키+ CursorMatchTest 명령어 추가 (0) | 2015.09.18 |
오토핫키+ ColorReplace 명령어 추가 (0) | 2015.09.15 |