본문 바로가기

파이썬 기초

파이썬 화면 캡처 방법(확장 모니터 포함)

파이썬을 활용하면 여러 가지 방법으로 화면(스크린) 캡처를 할 수가 있습니다.

 

오늘은 그중에서도 MSS 모듈을 활용한 간단한 캡처 방법을 소개합니다.

 

최종 목표는 다음과 같습니다.

 1) 키보드의 'F9' 버튼을 누르면 누를 때마다 메인 화면이 아닌 확장 모니터의 전체 화면이 자동으로 캡처.

 2) 캡처 화면은 저장하는 현재 시간을 파일명(파일명_yymmdd_hhmmss.png)에 추가

 3) 키보드의 'Esc' 버튼을 누르면 기능 종료

 

모니터별로 하나의 스크린 캡처 또는 모든 모니터의 스크린을 캡처할 수 있는 mss 모듈을 설치합니다.

만약, mss 모듈이 설치가 안되어 있다면 import mss 입력하고 실행해보면 아래와 같은 에러가 발생합니다.

ModuleNotFoundError : No module named 'mss'

sct_00

mss 모듈 설치는 아주 간단합니다. PowerShell 창(또는 CMD 창)을 열어서 다음과 같이 입력하세요.

 

pip install mss

 

주피터 노트북을 사용하신다면 별도 PowerShell 창을 열지 않고 아래와 같이 '%' 뒤에 이어서 pip install mss라고 입력하면 됩니다.

mss 모듈 설치가 정상적으로 완료되었으면 import mss 입력하고 실행해 보세요.

sct_02

mss 모듈이 정상적으로 설치되었다면 주 모니터의 전체 화면을 캡처를 해봅시다.

다음과 같이 with를 사용하여 instance를 생성하고 sct.shot() 코드를 입력하여 실행합니다.

sct_03

입력한 코드를 실행하여 보면, 소스파일이 있던 폴더에 주 모니터의 전체 화면이 monotor-1.png 파일이 저장되어 있는 것을 볼 수 있어요.

sct_04
monitor-1.png 파일

아주 간단한 코드만으로 화면 캡처가 가능합니다.

 

다음은  sct.shot()의 대신 다음과 같이 입력 후 실행해 보세요.

sct_05

여기서, mon은 주 모니터, 확장 모니터, 전체 모니터를 선택할 수 있으며, output에는 결과 이미지가 저장된 파일의 이름을 변경할 수 있습니다. 

  ☞ mon=-1 : (확장 모니터를 포함한) 전체 화면

  ☞ mon= 1 : 주 모니터

  ☞ mon= 2 : 확장 모니터

 

다음 단계는 현재 시간을 받아와서 출력해보도록 합시다.

sct_06

실행 결과를 보면 오늘 일자와 현재 시간이 yymmdd_HHMMSS 형태로 출력되는 것을 확인할 수 있습니다.

 

마지막 단계로 키보드의 특정 버튼이 누려지면 함수를 호출할 수 있도록 해보겠습니다.

우선 keyboard 모듈을 import 합니다.

(만약 keyboard 모듈이 설치되어 있지 않다면 pip install keyboard 실행하시면 됩니다.)

키보드의 F9를 누를 때마다 current_time 함수가 호출되는 구조입니다.

키보드의 Esc를 누르면 키보드 입력 처리를 종료하게 됩니다.

sct_07

단계별로 화면 캡처, 현재시간 출력, 키보드 입력받기를 실행하여 보았습니다. 

 

지금까지의 내용을 종합하여 키보드의 'F9' 버튼 누를 때마다 확장 모니터의 전체 화면을 스크린 캡처하는 전체 코드입니다.

sct_08