2015-12-16 23 views
5

まず、Write image to Windows clipboard in python with PIL and win32clipboard?にある質問は、Write image to Windows clipboard in python with PIL and win32clipboard?です。これはPython 2.xにのみ有効です。 - 私はそれを試して、それは動作しませんでした。私は1つの問題克服:StringIO and cStringIO modules are gone in Python 3.0:を、しかし、別の1にぶつかった:Python3のクリップボードに画像をコピー

したがって
TypeError: string argument expected, got 'bytes' 

、Pythonの3のために再度同じ質問を再度求めて - Pythonの3の画像をクリップボードにコピーする方法は?

from io import StringIO 
import win32clipboard 
from PIL import Image 

def send_to_clipboard(clip_type, data): 
    win32clipboard.OpenClipboard() 
    win32clipboard.EmptyClipboard() 
    win32clipboard.SetClipboardData(clip_type, data) 
    win32clipboard.CloseClipboard() 

filepath = 'image.jpg' 
image = Image.open(filepath) 

output = StringIO() 
image.convert("RGB").save(output, "BMP") 
data = output.getvalue()[14:] 
output.close() 

send_to_clipboard(win32clipboard.CF_DIB, data) 

おかげ

答えて

4

あなたがここにStringIOを望んでいない:ここで私はこれまで持っているコードです。画像は生のバイナリデータであり、Py3ではstrは純粋にテキスト用です。bytesおよびbytesのようなオブジェクト(bytearray、連続するmemoryviews、mmaps)はバイナリデータ用です。バイナリデータにPy2のStringIO.StringIOを置き換えるには、io.BytesIOio.StringIOではなくPython 3で使用します。

+3

Windows 7でピローとPyWin32 219でテストしたところ、BytesIO –

+0

@MikeDriscollで問題なく動作しました。確認していただきありがとうございます。私は修飾言語を削除します。 – ShadowRanger

関連する問題