본문 바로가기
** My Projects

파이썬으로 화면 캡처 프로그램 만들기 - 개인프로젝트 01

by 심코딩 2022. 6. 23.

회사에서 업무를 하다 보면 가끔 정말 짜증 날때가 있다.

 

업무를 하다 보면 화면 내에 있는 특정 부분을 캡처해서 메일로 발송 한다던지, 내가 따로 사용을 해야 하는 경우가 굉장히 빈번하게 발생을 하는데, 그 때 마다 윈도우에 자체적으로 되어있는 clipping tool을 켠다거나, 흔히 아는 윈도우 쉬프트 s 를 눌러서 캡처를 하곤 하였다.

 

그런데 이게 사실 조금 은근히 스트레스를 많이 받았었다. 캡처를 하고, 또 저장을 해야하고 메일로 보낼때는 저장한곳을 열어야 하고 만약 저장을 잘못했으면 또 다시 확인해야 하고.. 물론 더 편리한 기능들이 있는데도 불구하고 내가 모르는 거일수도 있지만 업무를 하다보면 이런 자잘자잘한 것들이 모여서 큰 스트레스가 되기도 한다.

 

따라서 내가 지금까지 혼자 공부한 코딩을 이용하여 업무에 도움이 되는 프로그램들을 한번 만들어 보려고 한다.

 

물론 실제로 내가 사용을 할 지 안할지도 모르지만 그냥 단순히 내가 배운 것들을 이용해서 뭔가를 만들어 보고싶다는 생각이 들어서이다.

 


화면 캡처 도구 만들기 (Clipping tool)

 

내가 만들 캡처도구의 구조는 이렇게 될 것이다.

 

  • 기존에 드래그해서 드래그 한 부분을 캡처 하는것과 다르게, 클릭 두번을 하면 그 클릭으로 이루어진 직사각형을 자동으로 만들고 그 부분만 캡처를 할 것이다. 업무를 할 때 컴퓨터 사양이 좋지 않으면 드래그를 하다가 잘못 드래그를 하거나, 중간에 드래그가 끊겨서 다시 드래그 해야 하는 경우가 종종 있었다.
  • 두 좌표를 찍어 캡처를 하는건 드래그보단 정확하진 않지만 충분히 가능하고 더 효율적이라 생각이 들었다.
  • 캡처가 되면 이미지 미리보기가 열릴 것이고, 자동으로 내가 지정한 폴더에 저장이 된다.
  • 또한 그 폴더가 자동으로 화면 맨 앞에 열리게 될 것이다.

일단 오늘은 캡처를 위해 제일 중요한 마우스 좌표를 가져 오는 것에 대해 작성해보겠다.

 

 

from pynput.mouse import Listener

coord = []

def click(x,y,button,pressed):
    if pressed:
        x = int(x)
        y = int(y)
        coord.append(x)
        coord.append(y)

        if len(coord) == 4:
            print(coord)
            return False

with Listener(on_click = click) as Listener:
    Listener.join()

 

pynput 과 Listener 모듈을 이용하여,

 

좌표를 모을 리스트인 coord라는 빈 리스트를 만든다.

 

그리고 클릭을 할 때마다 (x,y)가 coord에 추가가 될 것이고, 이 coord의 길이가 4개, 즉 (x,y) 좌표가 두개가 되는 순간 해당 함수는 멈추게 되는 것이다.

결과

잘 나오는지 확인 하기 위해 print를 이용하여 확인을 해보았다.

 

다음에는 스크린 자체를 캡처 하는법을 알아봐야 겠다.

댓글