ImageListSearch 명령어 설명 바로가기

 

이 샘플 스크립트는 설명의 편의를 위해 검색대상을 화면이 아닌 이미지파일로 했습니다.

SearchTarget_....bmp : 일련의 숫자 이미지가 들어있는 이미지 파일

imglist_number.bmp : 0~9까지의 파트이미지가 세로로 연결된 이미지리스트(파트사이즈 5x8)

 

 

 

Test.ahk 파일을 다운로드한  'Ahk+ 전용 AutoHotkey.exe 파일'  위에 드래그해서 실행하세요.

ImageListSearch숫자추출_테스트.zip

 

 

 

<스크립트 : SearchTarget_오랜지컬러숫자추출.ahk>

 

color := 0xFFB400                  ;오랜지색 RGB
imageList = imglist_number.bmp   ;이미지리스트 경로 (흰색의 5x8 픽셀로된 10개의 숫자 이미지리스트)
searchTarget = SearchTarget_오랜지컬러숫자추출.bmp     ;검색대상 경로


;검색대상에 있는 숫자컬러와 이미지리스트의 숫자컬러가 다르므로
;이미지리스트의 숫자컬러를 검색대상의 숫자컬러로 교체해 줍니다.

ImageGet, hImgList,,,,, imageList   ;이미지리스트파일을 로딩

ColorReplace, hImgList, hImgList, 0xFFFFFF, color   ;흰색(0xFFFFFF) -> 오랜지색(0xFFB400) 교체

 

;검색시작좌표와 마지막좌표 설정
ImageGet,,,,,, searchTarget,,size
curx := 0  ,  cury := 0
endx := size.width - 1  ,  endy := size.height - 1

loop
{
  ;x축 검색영역 벗어날시 루프 종료
  if (curx>endx)
    break
  
  ;5x8 픽셀사이즈의 파트이미지 10개로 구성된 이미지리스트로 대상 검색
  ;이미지리스트파일 대신 이미지리스트비트맵핸들을 사용하므로 *HBmpNotDel 옵션 추가
  ImageListSearch, sx,sy,si, curx,cury,endx,endy, *UseZeroIndex *Listmax10 *TransBlack *Transnot%color% *FixW *ValidW *Obj *TargetFile<%searchTarget%> *HBmpNotDel %hImgList%
  if !ErrorLevel
  {
    str .= si.index
    curx := si.validx + si.validw
  }
  ++curx
}

 

;이미지리스트 비트맵 핸들의 사용이 끝났으므로 핸들을 초기화합니다.
DllCall("DeleteObject", Ptr,hImgList)

 

;찾은숫자 메시지박스로 표시

MsgBox % "찾은숫자 = " str

 


/*


 < ImageListSearch 명령에 사용된 옵션 설명 >

 

*UseZeroIndex : 이미지리스트의 시작인덱스를 1이 아닌 0을 사용한다.

*Listmax10 : 이미지리스트가 10개의 파트이미지로 구성되있음을 표시합니다.

*TransBlack : 이미지리스트의 배경색이 검은색임을 표시합니다.(검색제외 색상)

*Transnot%color% : 각 파트이미지로 검색할시 파트이미지의 검은색 영역에 color 변수의 색값이 없어야 함을 표시합니다.

*FixW : 검색영역을 검색시작좌표에서 파트이미지의 가로사이즈(W)만큼으로 제한합니다.

검색영역을 무시하고 일정영역 만큼만 각 파트이미지를 대조해 보고 서치를 끝내는 옵션입니다.

*ValidW : 파트이미지의 가로영역의 유효이미지를 제외한 부분을 최대한 제거합니다.

숫자 1의 경우 가로 5픽셀이지만 이 옵션 효과로 인해 가로 유효영역인 2픽셀만 검색에 사용됩니다. *Trans 옵션도 투명영역을 배제하고 유효영역만 검색하는데 뭐가 다르냐고 의문을 품는 분들을 위해 설명하자면 *Trans 옵션은 실제 검색용으로 쓰는 이미지 사이즈를 줄여주지는 않지만 *Valid 옵션은 이미지 크기가 바뀐다고 보면됩니다.

*Obj : 출력변수 si 를 Object 출력변수로 설정합니다.

*TargetFile<%searchTarget%> : searchTarget 변수의 파일을 대상으로 검색합니다.

파일대상일때는 경로를 < > 로 둘러싸줘야 합니다.

*HBmpNotDel : 검색소스파일대신 비트맵핸들값으로 검색한다는 것을 표시하는 옵션입니다. (*HBmp옵션과 동일하지만 핸들을 소멸시키지 않습니다.)
 

*/

 


 

 

 

 

 

 

 

 

Posted by 와이로