프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

40. 화소와 색상 값


앞으로 우리는 컴퓨터 화면 속 화상을 찾거나, 특정 색상이 존재하는지 알아내는 등 '화면'에 관한 함수를 배울 것입니다. 이를 잘 이해하기 위해선 '화소(Pixel)'와 그 색상을 나타내는 '색상 값(Color code)'의 약간의 이해가 필요합니다.

우리는 자동화 프로그래밍에 쓰이는 최소한의 개념만 알면 되므로, 간단히만 설명드리겠습니다.

화소

앞으로 강좌를 진행하면서 '화소'라는 말을 자주 쓸 것입니다. 영어로 흔히 '픽셀'이라고 일컫는 이 용어는 컴퓨터나 이미지 파일에서 좌표를 나타내는 기준 단위가 됩니다.

컴퓨터에서 한 화소는 하나의 색상을 표현하고 있으며, 그렇게 색상을 표현하는 점이 모여 하나의 화상이 됩니다. 우선 이렇게만 이해하자고요.

색상 값

한 화소는 하나의 색상을 가지고 있다고 했습니다. 색상을 표현하는 여러 방법이 있는데, 컴퓨터는 주로 RGB 방식을 사용합니다.

학창시절 미술 시간에 배우셨는지 모르겠습니다. 빨간 빛과 초록 빛, 파란 빛을 모두 합쳐서 벽에 쏘면 흰색이 나타나는데, 각각의 밝기를 낮춰서 여러 색을 낼 수 있죠. 그래서 여러분이 보는 화상은 빨강, 초록, 파랑 빛을 얼마나 섞는냐로 나타낼 수 있습니다.

그래서 컴퓨터에서는 '빨강', '초록', '파랑'을 얼마나 섞었는지를 수치로 표현하여 한 색상을 표현합니다. 각 색을 영문 머릿글자를 따서 'R', 'G', 'B'라고 하죠.

R, G, B 각각의 수치는 0(아예 섞지 않음)부터 255(원색)으로 나타날 수 있으며, 예를 들어 순수한 빨강은 R=255이며 G,B는 0입니다. 노랑은 '빨강 + 초록'이기 때문에, R,G=255이고 B는 0일 것입니다. 색을 좀 덜 섞으면 탁해지겠죠. 모두 255의 값을 가지면 흰색이고, 모두 섞지 않으면 검은색입니다.

아무튼, 컴퓨터에서 색은 RGB 값으로 나타낼 수 있다는 점만 이해하시면 됩니다.

색상 값의 16진수 표기

우리가 일상 생활에서 쓰는 수는 '10진수'입니다. 0 ~ 9까지 총 10개의 숫자를 이용하고, 그 뒤의 값은 자리올림을 하여 나타냅니다.

그러나 컴퓨터에서 색상 값은 주로 16진수로 나타냅니다. 쓰는 숫자가 '9'뒤에도 6개나 더 있는 것입니다. 아라비아 숫자(0 ~ 9)에는 9를 넘는 숫자가 없기 때문에, 우리는 알파벳을 빌려서 A~F를 추가로 사용합니다. 16진수는 총 16개의 숫자 - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F가 있는 것이지요.

Tip: 수와 숫자

'수'는 셀 수 없는 큰 수까지 있지만, '숫자'는 수를 표현하는데 쓰이는 문자로서 아라비아 숫자는 0부터 9까지 총 10개만 존재합니다.

따라서 '16진수용 숫자'에서 쓰이는 'A~F'는 알파벳을 썼지만 숫자로 취급합니다. 16진수는 0~F 까지 총 16가지의 숫자를 사용하죠.

16진수에서 '10'은 'F'의 다음 수입니다. 따라서 RGB 수치가 각각 255까지 있다는 말은 16진수로는 FF까지 있다는 뜻입니다. (계산하지 마세요! 그냥 16진수 FF가 10진수로는 255입니다.) 깔끔하게 두 자리로 딱 떨어지죠. 그래서 우리는 RGB 수치를 16진수로 두 자리씩 써서, 총 6자리로 표기합니다. 예를 들어서, FF00FF는 [R=FF, G=0, B=FF]라는 뜻입니다.

00C896은? [R=00, G=C8, B=96]만큼 섞였다는 뜻이지요. 10진수로 바꾸면 G=200이고 B=150인데, 단순히 앞자리만 비교 해봐도 C8이 96보다 크겠죠? C는 13번째 숫자, 9는 10번째 숫자니까요. (0이 첫 번째 숫자입니다.)

16진수를 10진수로 일일이 바꿀 필요는 없습니다. 여러분은 "색상은 16진수로 두 자리씩 써서 표기한다"는 사실만 이해하시면 됩니다. 각 값에 따른 색상 변화는 몸으로 익혀나갈 수 있습니다. 프로그래밍에 그렇게 중요하진 않기도 하고요.

화소와 좌표 유형

마우스 관련된 함수를 사용 할 땐 좌표 유형을 CoordMode("Mouse", 유형)으로 적어주었습니다.

비슷하게, 앞으로 화소와 관련된 함수는 CoordMode("Pixel", 유형)으로 적어 좌표 유형을 지정해주시면 됩니다. 예를 들어 화면에서 색상을 찾는 함수를 쓸 때 그 범위를 '절대 좌표'로 지정해주고 싶으면 CoordMode("Pixel", "Screen")이 되겠죠.

Tip: 강좌에서 사용하는 '이미지'와 '화상'의 차이

가능하면 우리말을 사용하고자, 바꿔도 어색하지 않은 외국어는 우리말로 적고 있습니다.

'이미지 파일'이라는 용어는 '영상 파일'로 쓸 수 있지만, 최근 '영상'과 '동영상'의 구분이 약해졌기 때문에 혼동을 방지하고자 '파일'을 말하는 경우엔 '이미지 파일'을 그대로 씁니다. 반면, 화면 상에 보이는 이미지는 '화상'으로 사용하니 고려하여 강좌를 봐주시길 바랍니다.

  • 이미지 파일: 컴퓨터에 파일 형식으로 존재하는 이미지 (=파일로 있는 이미지)
  • 화상: 컴퓨터 화면에 보이는 모든 시각 정보. (=화면 상의 이미지)
질문하러 가기