Python으로 유틸리티를 만들어 사용하는 경우 화면 캡처를 해야 하는 경우가 있죠? Python 화면 캡처 방법 2가지를 살펴보겠습니다.
목차
Python 화면 캡처 방법 소개
반복적으로 캡처를 해야 하는데, 영역은 정해져 있어야 할 때, 어떻게 하고 계시나요? 매번 캡처 영역을 드래그해서 설정한 다음 캡처해서 저장하시나요? 저장된 캡처 파일들을 따로 추리거나 하기 번거롭지 않으신가요?
이런 분들은 Python으로 화면 캡처를 하면 보다 편리하게 화면 캡처를 할 수 있습니다. Pillow 패키지를 사용하는 방법과 pyautogui 패키지를 사용하는 방법 2가지를 모두 살펴보도록 하겠습니다.
Pillow 화면 캡처 방법
Pillow 패키지의 경우에는 ImageGrab 클래스를 사용하면 됩니다. 파라미터는 튜플로 영역을 알려주면 됩니다. 순서대로 시작점의 (x, y)와 끝점의 (x1, y1)를 붙여서 하나의 튜플로 작성해 주시면 됩니다. 아래의 코드는 (100, 900)부터 (500, 1200)까지의 영역을 캡처하겠다는 의미입니다.
save 메서드를 사용해서 저장할 파일 이름을 지정해 주면 됩니다.
grab = ImageGrab.grab((100, 900, 500, 1200))
grab.save('captured.png')
Python위와 같은 코드는 아래의 회색 박스 영역을 캡처하게 됩니다.
pyautogui 화면 캡처 방법
아래와 같이 screenshot 메서드를 사용하면 됩니다. region을 통해서 캡처하고자 하는 좌표를 설정할 수 있는데, Pillow의 ImageGrab과는 사용방법이 다르므로 주의하여 사용하시기 바랍니다.
값은 차례대로 가로 시작점(x), 세로 시작점(y), 너비(width), 높이(height)입니다. 즉, 화면 좌측 최상단이 (0, 0)입니다. (100, 900)에서 (400, 300) 크기의 영역을 캡처하라고 알려주는 것입니다.
shot = pyautogui.screenshot(region=(100, 900, 400, 300))
shot.save('captured.png')
Pythonsave 메서드를 사용해서 이미지 파일로 저장하면 됩니다.
화면 캡처 결과
위의 Pillow grab 메서드를 이용한 경우나 pyautogui를 이용한 경우 모두 아래 그림 3과 같은 캡처 결과를 확인할 수 있습니다.
정리
Pillow와 pyautogui를 사용해서 Python 화면 캡처 방법 2가지를 알아보았습니다.
그림 1과 그림 2의 캡처되는 영역은 동일하지만 영역을 설정하는 방식이 Pillow의 ImageGrab을 이용하는 경우에는 시작점의 좌표값과 끝점의 좌표값을 바탕으로 캡처한다는 것, 그리고 pyautogui를 사용하는 경우에는 시작점과 캡처 영역의 크기로 region을 설정한다는 점 기억해 두시기 바랍니다. 헷갈릴 때에는 여기에 오셔서 다시 확인하셔도 됩니다. 🙂
관련 자료
PyAutoGUI의 Screenshot Functions 공식 문서와 Pillow의 ImageGrab 공식 문서를 참고했습니다.