ImageSearch

화면 한 구역에서 이미지를 검색합니다.

ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile

매개변수

OutputVarX, OutputVarY

The names of the output variables in which to store the X and Y coordinates of the upper-left pixel of where the image was found on the screen (if no match is found, the variables are made blank). 단, CoordMode가 사용되는 좌표 체계를 바꾼 경우는 예외입니다.

이 매개변수가 비어 있는 경우가 있습니다. 그러면 ErrorLevel (아래 참조)를 사용하여 일치가 발견되었는지 알아낼 수 있습니다.

X1, Y1

검색할 사각형의 좌상 X와 Y 좌표, 표현식 가능. 좌표는 활성 창에 상대적입니다. 단, CoordMode가 사용되어 좌표가 변경된 경우는 제외합니다.

X2, Y2

검색할 사각형의 우하 모서리 X와 Y 좌표, 표현식 가능. 좌표는 활상 창에 상대적입니다. 좌표는 활성 창에 상대적입니다. 단, CoordMode가 사용되어 좌표가 변경된 경우는 제외합니다.

ImageFile

이미지의 파일 이름, 절대 경로를 지정하지 않으면 %A_WorkingDir%에 있다고 간주됩니다. 모든 운영 체제는 GIF, JPG, BMP, ICO, CUR, 그리고 ANI 이미지를 지원합니다 (BMP 이미지는 반드시 16-비트 이상이어야 합니다). 다른 아이콘 자원으로는 다음 유형의 파일이 포함됩니다: EXE, DLL, CPL, SCR, 그리고 기타 아이콘 자원을 보유한 유형들. Windows XP 이후에, PNG, TIF, Exif, WMF, 그리고 EMF와 같은 이미지를 추가로 지원합니다. 운영 체제가 XP 미만이면 Microsoft사의 무료 GDI+ DLL을 AutoHotkey.exe 폴더 안으로 복사해 넣을 수 있습니다 (그러나 컴파일된 스크립트의 경우라면, 그 DLL을 스크립트의 폴더 안으로 복사해 넣으십시오). 그 DLL을 내려 받으려면, 다음 문구를 www.microsoft.com에 넣고 검색해 보십시오: gdi redistributable

옵션: 파일의 이름 앞에 바로 0 개 이상의 다음 문자열이 나타날 수도 있습니다. 각 옵션은 옵션 사이에 단일 스페이스 또는 탭으로 분리하십시오. 예를 들어: *2 *w100 *h-1 C:\Main Logo.bmp.

*IconN: 파일에서 첫 번째 아이콘 말고 아이콘 그룹을 사용하려면, *Icon과 다음에 바로 그룹의 번호를 지정하십시오. 예를 들어, *Icon2이면 두 번째 아이콘 그룹으로부터 기본 아이콘이 적재됩니다.

*n (변형): n에 0부터 255 (포함) 사이의 숫자를 지정하면, 차원에 상관없이 각 필셀 컬러의 적녹청 요소의 채도에 대하여 허용된 쉐이드 변형의 개수를 나타낼 수 있습니다. For example, if *2 is specified and the color of a pixel is 0x444444, any color from 0x424242 to 0x464646 will be considered a match. 이 매개변수는 이미지의 컬러가 조금씩 바뀔 경우 또는 ImageFile이 GIF나 JPG 같은 포맷을 사용할 경우 도움이 됩니다. 이 포맷은 화면에 이미지를 정확하게 나타내지 못합니다. 255 쉐이드 변형을 지정하면, 모든 색이 부합합니다. 기본 값은 0 쉐이드입니다.

*TransN: 이 옵션을 이용하면 더 쉽게 부합을 찾아낼 수 있습니다. 이미지 안에서 화면 안의 어느 컬러에도 부합할 한 컬러를 지정하면 됩니다. 투명 구역이 있는 PNG, GIF, 그리고 TIF 파일을 찾는 데 아주 자주 사용됩니다 (그렇지만, 아이콘은 이 옵션이 필요 없습니다. 왜냐하면 아이콘의 투명색은 자동으로 지원되기 때문입니다). GIF 파일에 대하여, *TransWhite이면 거의 대부분 작동할 것입니다. PNG와 TIF 파일에 대하여, *TransBlack가 제일 좋을 것입니다. 그렇지 않으면, N에 다른 어떤 컬러 이름 또는 RGB 값을 지정하십시오 (가이드는 컬러 차트를 참조하십시오. 아니면 RGB 모드로 PixelGetColor를 사용하십시오 ). 예제: *TransBlack, *TransFFFFAA, *Trans0xFFFFAA.

*wn and *hn: 이미지 크기를 조절할 너비와 높이 (이 너비와 높이는 또 여러-아이콘 .ICO 파일로부터 어느 아이콘을 적재할지 결정하기도 합니다.). 이 두 옵션을 모두 생략하면, ICO, DLL, 또는 EXE 파일로부터 적재된 아이콘은 시스템의 기본 소형-아이콘 크기로 조절됩니다. 보통 이는 16 x 16 입니다 (*w0 *h0를 지정하면 강제로 실제의/내부의 크기를 사용하도록 만들 수 있습니다.). 아이콘이 아닌 이미지는 그의 실제 크기로 적재됩니다. 그의 화면 비율을 유지한 채로 이미지를 늘리거나 줄이려면, -1을 차원 중 하나에 지정하고 양수를 나머지 차원에 지정하십시오. 예를 들어, *w200 *h-1을 지정하면 이미지가 200 픽셀 너비가 되며 그의 높이는 자동으로 설정됩니다.

[v1.1.23+]: A bitmap or icon handle can be used instead of a filename. 예를 들어, HBITMAP:*%handle%.

에러 처리

[v1.1.04+]: 이 명령어는 검색하는 동안 문제가 있다면 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.

ErrorLevel은 이미지를 지정된 구역 안에서 발견하면 0이 설정되고, 발견하지 못하면 1이 설정됩니다. 아니면 이 명령어가 검색을 수행하지 못하도록 막는 문제가 있었다면 2가 설정됩니다 (예를 들어 이미지 파일을 열지 못하거나 포맷 옵션이 심하게 잘못되었을 경우).

논평

ImageSearch를 사용하면 화면에서 그래픽 객체를 탐지할 수 있습니다. 그래픽 객체는 텍스트가 없으며 있다고 하더라도 쉽게 탐지하기가 어렵습니다. 예를 들어, 그림 버튼, 아이콘, 웹 페이지 링크, 또는 게임 객체의 위치를 알아내는 데 사용할 수 있습니다. 일단 발견되면, 그런 객체는 Click을 통하여 클릭할 수 있습니다.

종종 유용한 전략이 있습니다. 전체 이미지보다 이미지의 작은 구역만 떼어내 검색하는 것이 더 유용합니다. 이렇게 하면 이미지가 전체적으로 바뀌지만, 그 안에서 어떤 부분은 언제나 같은 경우, 신뢰성을 개선할 수 있습니다. 클립핑 구역을 추출하는 한 가지 방법은 다음과 같습니다:

  1. 이미지가 활성 창에 보이는 동안 Alt+PrtSc를 누릅니다. 이렇게 하면 화면의 찰칵그림이 클립보드에 저장됩니다.
  2. Paint와 같은 이미지 처리 프로그램을 엽니다.
  3. 클립보드의 내용을 붙여 넣습니다 (즉, 위의 찰칵그림).
  4. 그 이미지만 가지는 변하지 않고 유일한 구역을 선택합니다.
  5. 그 구역을 새 이미지 문서에 복사해 붙여 넣습니다.
  6. ImageSearch에 사용하기 위해 작은 파일로 저장합니다.

일치가 되려면, 화면 위의 이미지는 ImageFile 매개변수와 그의 옵션을 통하여 적재된 이미지와 크기가 같아야 합니다.

검색될 구역은 반드시 보여야 합니다; 다른 말로, 다른 창 뒤에 가려진 창의 구역은 검색할 수 없습니다. 대조적으로, 마우스 커서 아래에 부분적으로 가려진 이미지는 보통 탐지가 가능합니다. 이에 대한 예외는 게임 커서입니다. 게임 커서는 대부분의 경우 그 아래에 있는 이미지를 덮어버립니다.

검색은 구역의 위쪽에서 시작해 아래로 내려오므로, 여러 개가 부합할 경우, 위쪽에 가까운 부합이 발견됩니다.

투명색을 포함한 아이콘은 자동으로 그 투명 컬러가 화면 위의 어떤 컬러와도 부합하도록 허용합니다. 그러므로, 아이콘 뒤에 있는 색은 문제가 되지 않습니다.

ImageSearch는 8-비트 컬러 화면 (256-컬러) 이상을 지원합니다.

검색 행위는 디스플레이 어댑터의 컬러 깊이에 따라 달라질 수 있습니다 (특히 GIF 파일과 JPG 파일). 그러므로, 스크립트를 다중 컬러 깊이에서 실행하려면, 각각의 깊이 설정에 테스트해 보는 것이 제일 좋습니다. 쉐이드 변형 옵션 (*n)을 사용하면 다중 컬럼 깊이에 걸쳐서 그 행위를 일관성이 있게 만드는 데 도움이 됩니다.

화면 위에서 이미지가 반투명이라면, 아마도 ImageSearch는 그것을 찾는 데 실패할 것입니다. 이를 우회하려면, 쉐이드 변형 옵션 (*n)을 사용하거나 WinSet, Transparent, Off를 사용하여 그 창을 임시로 불투명하게 만드십시오.

PixelSearch, PixelGetColor, CoordMode, MouseGetPos

예제

Searches a region of the active window for an image and stores in FoundX and FoundY the X and Y coordinates of the upper-left pixel of where the image was found.

ImageSearch, FoundX, FoundY, 40, 40, 300, 300, C:\My Images\test.bmp

Searches a region of the screen for an image and stores in FoundX and FoundY the X and Y coordinates of the upper-left pixel of where the image was found, including advanced error handling.

CoordMode Pixel  ; 아래의 좌표를 활성 창이 아니라 화면에 상대적으로 번역합니다.
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\SomeApp\SomeApp.exe
if (ErrorLevel = 2)
    MsgBox 검색을 수행할 수 없었습니다.
else if (ErrorLevel = 1)
    MsgBox 아이콘을 화면에서 발견할 수 없었습니다.
else
    MsgBox 아이콘을 %FoundX%x%FoundY%에서 발견하였습니다.