Language/Python

[Python] 클립 보드 with Python

nowkoes 2023. 7. 29. 00:00

클립 보드

개요

pillow 공식 홈페이지 출처: https://pillow.readthedocs.io/en/stable/reference/ImageGrab.html

 

  클립 보드 기능은 우리가 효율적으로 데이터를 관리하고 사용할 수 있게 한다. 우리는 일반적으로 텍스트를 복사하거나 붙여 넣을 때 이 클립 보드를 사용하지만, 이보다 더 다양한 활용법이 존재한다.

 

 지난 게시글에서 클립 보드에 저장된 이미지를 특정 하위 디렉토리에 png 형식의 파일로 저장하는 방법에 대해 간략하게 소개하였다. 이번 글에서는 ImageGrab에 대해 좀 더 자세히 탐구하고, 클립 보드를 통한 이미지 관리법에 대해 알아보자.


본문

 

 이 코드는 사용자가 클립 보드에 이미지 파일을 저장한 경우, 해당 이미지를 example.png라는 파일로 저장하는 프로그램이다. 이를 위해선 PIL(Python Imaging Library)이라는 라이브러리를 활용한다. PIL은 파이썬에서 이미지 처리를 쉽게 할 수 있게 도와주는 라이브러리다. 

 

 파이썬에서는 메모리 관리와 코드의 명확성을 위해 필요한 모듈만 명시적으로 불러오는 방식을 사용한다. 이는 파이썬의 특징적인 부분으로, C++과 같은 언어와는 다르게 작동한다. C++에서는 특정 라이브러리를 포함하면 그 라이브러리의 모든 기능을 사용할 수 있지만, 파이썬에서는 from PIL import ImageGrab처럼 특정 모듈을 명시적으로 호출하여 사용한다. 이렇게 하면, 메모리를 효율적으로 사용할 수 있으며, 코드가 어떤 모듈을 사용하고 있는지 명확하게 파악하기 용이하다는 특징이 있다.


예제

 먼저 코드를 실행했을 때 스크린샷을 찍는 코드를 작성해 보자.

 

from PIL import ImageGrab

img = ImageGrab.grab()
img.save('example.png')

 해당 코드는 img라는 변수에 전체 화면을 캡처한 후, example.png라는 파일로 저장하는 코드다. 이를 실행시키면 다음과 같은 결과를 얻을 수 있다.

 

같은 디렉토리에 example.png가 생성됨

 

from PIL import ImageGrab

img = ImageGrab.grab(bbox=(0, 0, 100, 100))
img.save('screenshot.png')

 이번에는 특정 영역을 캡처하는 기능이다. 여기서 bbox는 bounding box의 약자로, 이미지나 그래픽에서 특정 영역을 지정할 때 사용하는 용어다. 즉, bbox = (0, 0, 100, 100)은 좌표 시스템에서 왼쪽 상단을 원점으로 하고, 오른쪽으로 100, 아래로 100까지의 사각형 영역을 의미한다. 따라서 해당 코드는 화면의 좌측 상단부터 시작하여, 가로와 세로가 각각 100픽셀인 사각형 영역의 스크린샷을 가져와 img라는 변수에 저장한다는 의미다. 

 

 참고로 PIL의 ImageGrab은 일반적으로 좌측 상단을 (0,0)으로 하는 좌표 시스템을 사용하며, bbox의 4개의 값은 각각 왼쪽 x 좌표, 상단 y 좌표, 오른쪽 x 좌표, 하단 y 좌표를 나타낸다. 이는 흔히 GUI 프로그래밍에서 사용하는 좌표 체계다.

 

이번엔 screenshot.png 파일이 생성되었다.


요약

ImageGrab
1. 정의: 파이썬의 PIL(Python Imaging Library) 라이브러리에 속한 모듈로서, 운영 체제의 스크린을 캡처하는 기능을 제공
2. 기능
- ImageGrab.grab(): 전체 화면을 캡처.
- ImageGrab.grab(bbox=(left, top, right, bottom)): 화면의 특정 영역을 캡쳐. bbox 매개변수는 캡처할 영역의 좌표를 정의하는데, 왼쪽 상단을 원점으로, (left, top, right, bottom) 순서로 좌표를 입력.
- img.save('filename.png'): 캡처한 이미지를 파일로 저장.
- ImageGrab.grabclipboard(): 클립보드의 내용을 반환. 클립보드에 이미지가 있으면 PIL 이미지로 반환되며, 파일명 목록이 있으면 목록을 반환. 그 외의 경우에는 None을 반환.
- ImageGrab.grab_to_file(filename): 전체 화면의 스크린샷을 캡처하고, 이를 주어진 파일명으로 저장.

 

반응형

'Language > Python' 카테고리의 다른 글

[파이썬] 반응형 GUI  (0) 2024.09.23
[파이썬] tkinter (2) - PDF 페이지 추출 프로그램  (0) 2024.06.29
[파이썬] tkinter (1)  (0) 2024.06.24
[Python] PDF 텍스트 추출  (0) 2023.10.31
[Python] matplotlib(1)  (0) 2023.09.12