프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

⚠ 이 강좌는 오토핫키 v1을 다룹니다

지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.

[프날 오토핫키] 32. PixelSearch (픽셀 서치)

지난 강좌에 배운 ImageSearch를 완벽히 이해했다면, 아마 이번에 배울 PixelSearch는 쉬울것입니다. 그럼, 시작하겠습니다.

 


 특정 색상을 찾는 PixelSearch 

PixelSearch는 사용자가 이미지를 따지 않아도 됩니다. 우리가 색상 코드만 입력해준다면, 특정 영역에 그 색상이 있는 지 찾아주는 명령어입니다.

 

그러니까, 1x1크기의 이미지를 ImageSearch하는 것과 동일합니다. 아래는 이 말을 요약한 그림입니다.

 


 매개변수 

PixelSearch의 매개변수는 ImageSearch와 유사합니다.

PixelSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation, Mode]

ImageSearch와 앞부분은 동일하니, ColorID 파라미터부터 설명 드리도록 하겠습니다.

  • ColorID: 찾을 색상 값을 16진수로 써주시면 됩니다. 이 때, RGB가 아닌 BGR순서로 써주셔야 합니다.
  • Variation: ImageSearch에 나왔던 오차값입니다. (정확히는 음영의 허용정도)
  • Mode: PixelSearch의 동작을 바꿔 줄 옵션들을 쓸 수 있습니다.

하나하나 설명드리도록 하겠습니다.

 

1. ColorID

16진수로 찾을 색상값을 써주시면 됩니다. 현재 마우스 아래에 있는 색상을 알아오고자 할때는 아래와 같이 Active Window Info (Window Spy)를 사용합니다. Window Spy를 띄우는 방법은 22강 첫 부분을 참고해주세요 (클릭)

현재 마우스 커서 아래에 있는 색상은 F77878입니다.

이 때, 16진수임을 표시하기 위해 앞에 0x라는 기호를 붙여주고, Window Spy의 색상값은 RGB로 나오기 때문에 BGR로 바꾸기 위해 앞 두자리와 뒤 두자리의 위치를 바꿔주시면 됩니다. 아래와 같이 말입니다.

Window Spy에서 아래와 같이 나온다면
ABCDEF

PixelSearch에 써주실 땐 이렇게 써주시면 됩니다.
0xEFCDAB

** 후술할 Mode 매개변수에 RGB 옵션을 사용해주시면 0xABCDEF라고 써야합니다.

 

2. Variation

ImageSearch의 ImageFile매개변수에 옵션을 주었던 *n과 동일합니다. 별표(*)는 쓰지 않고, 정수값으로 0부터 255사이로 적어주시면 됩니다.

 

ImageSearch에 비해 PixelSearch는 오차가 생기면 안되는 경우가 대부분이라, 보통은 쓰지 않습니다.

 

쓰게 된다면 10부터 시작해서 10씩 올리면서 적절한 값을 찾으시면 됩니다.

 

3. Mode

Fast와 RGB를 쓸 수 있습니다. 

  • Fast: 서치 속도를 빠르게 합니다
  • RGB: ColorID의 값을 BGR이 아닌 RGB로 쓸 수 있게 해줍니다.

두 옵션을 모두 써주실려면 아래와 같이 공백으로 구분하여 써주시면 됩니다.

Fast RGB

추가로, PixelSearch는 그렇게 빠른 명령어가 아닙니다. 범위가 넓으면 동작 속도는 크게 떨어지구요.

범위가 넓다 싶으면 반드시 Fast 옵션을 넣어주세요.


 예제 

이제 예제를 보겠습니다. 우선 PixelSearch의 완성된 구문은 아래와 같습니다.

PixelSearch, vx, vy, 200, 200, 300, 300, 0x00C896,,Fast RGB

Variation 매개변수는 작성을 하지 않았기 때문에, 콤마가 두 개로 보입니다. 사실은 저 콤마들 사이에 Variation 매개변수가 들어가야합니다. 저는 별도로 값을 주지 않을 것이기 때문에 쓰지 않았습니다.

 

ErrorLevel은 0과 1을 가지고, 0이 정상적으로 찾았을 때입니다.

 

CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
PixelSearch, vx, vy, 200, 200, 300, 300, 0x00C896,,Fast RGB
if (ErrorLevel = 0)
{
    MsgBox, 찾았습니다. `n X: %vx% Y: %vy%
}
else
{
    MsgBox, 못 찾았습니다.
}
ExitApp

32강.ahk
0.00MB

정상적으로 진행됩니다.

 

유의할 점으로는, 저는 Mode 매개변수에 RGB 옵션을 주었기 때문에 0x00C896색상을 찾았습니다. 만약 쓰지 않는다면 0x96C800색상을 찾았겠지요.

 

그리고 예제 상단에 CoordMode, Mouse, Screen은 안쓰셔도 됩니다. (마우스 동작이 없기 때문입니다.) 이건 제 실수입니다.

 


다음은 간단하게 PixelGetColor라는 명령어를 배우고, 이미지와 화면 처리에 관한 명령어 강좌를 마치도록 하겠습니다.

 


| 32. PixelSearch |