[파이썬] 이미지 클립보드에 복사 붙여넣기

반응형
    반응형

    win32clipboard를 이용한 클립보드 조작하기

    파이썬의 win32clipboard Windows 운영 체제의 클립보드를 조작하는 모듈입니다. 다른 운영체제에서 안되는 것이 아쉽긴 하지만 이 모듈을 사용하면 파이썬 코드로 텍스트, 이미지 데이터를 클립보드에 복사하고 붙여넣을 수 있습니다.

    이번 포스팅에서는 이미지 복사 붙여넣는 방법에 대해 쓰겠습니다. 텍스트도 마찬가지 방법으로 하면 되는데 pypercilp이 더 간단하기 때문에 pyperclip을 사용하시는 걸 추천드립니다.

    [파이썬] 클립보드 텍스트 복사 붙여넣기

    win32clipboard 주요 기능

    1. 클립보드 열기 및 닫기: OpenClipboard()CloseClipboard() 메쏘드를 사용하여 클립보드를 열고 닫을 수 있습니다. 주의할 것은 반드시 OpenClipboard()로 클립보드를 열고서 작업을 시도해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다.
    2. 클립보드 비우기: EmptyClipboard() 메쏘드를 사용하여 클립보드를 비울 수 있습니다. 클립보드에 저장된 내용을 모두 지웁니다.
    3. 데이터 읽기(load): GetClipboardData(format) 메쏘드를 사용하여 지정된 형식의 데이터를 클립보드에서 읽어올 수 있습니다.
    4. 데이터 복사(save): SetClipboardData(format, data) 메쏘드를 사용하면 클립보드에 데이터를 복사할 수 있습니다. 지정된 형식으로 저장됩니다.
    5. 주요 데이터 형식 상수: 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 운영 체제에서만 동작합니다. 참고하시기 바랍니다.

    함께보면 좋은 글

    [업무 자동화 파이썬] pyautogui로 마우스 제어하기

    [업무자동화] 파이썬으로 키보드 제어하기

    [파이썬] 클립보드 텍스트 복사 붙여넣기

    댓글

    Designed by JB FACTORY

    ....