[파이썬] 이미지 클립보드에 복사 붙여넣기
- Python/업무자동화
- 2024. 4. 6.
반응형
반응형
win32clipboard를 이용한 클립보드 조작하기
파이썬의 win32clipboard
Windows 운영 체제의 클립보드를 조작하는 모듈입니다. 다른 운영체제에서 안되는 것이 아쉽긴 하지만 이 모듈을 사용하면 파이썬 코드로 텍스트, 이미지 데이터를 클립보드에 복사하고 붙여넣을 수 있습니다.
이번 포스팅에서는 이미지 복사 붙여넣는 방법에 대해 쓰겠습니다. 텍스트도 마찬가지 방법으로 하면 되는데 pypercilp이 더 간단하기 때문에 pyperclip을 사용하시는 걸 추천드립니다.
win32clipboard 주요 기능
- 클립보드 열기 및 닫기:
OpenClipboard()
와CloseClipboard()
메쏘드를 사용하여 클립보드를 열고 닫을 수 있습니다. 주의할 것은 반드시 OpenClipboard()로 클립보드를 열고서 작업을 시도해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다. - 클립보드 비우기:
EmptyClipboard()
메쏘드를 사용하여 클립보드를 비울 수 있습니다. 클립보드에 저장된 내용을 모두 지웁니다. - 데이터 읽기(load):
GetClipboardData(format)
메쏘드를 사용하여 지정된 형식의 데이터를 클립보드에서 읽어올 수 있습니다. - 데이터 복사(save):
SetClipboardData(format, data)
메쏘드를 사용하면 클립보드에 데이터를 복사할 수 있습니다. 지정된 형식으로 저장됩니다. - 주요 데이터 형식 상수:
CF_TEXT
,CF_BITMAP
,CF_DIB
,CF_UNICODETEXT
등의 상수가 제공됩니다. 데이터 지정을 위해서 필요합니다.
이미지 클립보드에 복사 예제
다음은 이미지 복사하는 예제입니다.
from PIL import Image, ImageGrab
import win32clipboard
import io
# 이미지 불러오기
image_path = "example.png"
image = Image.open(image_path)
# 클립보드에 이미지 복사
def set_image_to_clipboard(image):
output = io.BytesIO() # 그림 메모리에 저장
image.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data)
win32clipboard.CloseClipboard()
# 이미지를 클립보드에 복사
set_image_to_clipboard(image)
win32clipboard 모듈은 DIB(장치 독립 비트맵) 형식 데이터를 사용하므로, BMP 형식으로 이미지를 저장해주어야 합니다. 그래서 이미지를 RGB 형식으로 변환한 후 BMP로 바꿔 클립보드에 넣습니다. 어려우실 수 있는데 그냥 평소 사용하던 클립보드와 똑같이 움직입니다. 사용하는데 아무 지장이 없습니다. 과정이 그렇다는 것일뿐입니다.
.
복사한 이미지는 pyautogui 의 키보드 제어나 기타 다른 라이브러리로 불러와서 사용하면 간단하게 끝이 납니다.
pyautogui의 키보드 제어에 대한 내용은 아래 포스팅을 참고하세요.
마치며
win32clipboard
모듈은 Windows 운영 체제에서만 동작합니다. 참고하시기 바랍니다.
함께보면 좋은 글
'Python > 업무자동화' 카테고리의 다른 글
[업무자동화] 파이썬으로 회의록.doc 만들기 (5) | 2024.08.30 |
---|---|
[파이썬] 클립보드 텍스트 복사 붙여넣기 (0) | 2024.04.04 |
[업무자동화] 파이썬으로 키보드 제어하기 (0) | 2024.04.01 |
[업무 자동화 파이썬] Listener를 이용한 마우스 이벤트 제어 (0) | 2024.03.30 |
[업무 자동화 파이썬] pyautogui로 마우스 제어하기 (0) | 2024.03.28 |