2015-12-16 8 views
5

Zunächst führt die Frage auf SO copy image to clipboard in python zu Antwort Write image to Windows clipboard in python with PIL and win32clipboard?, die nur gut für Python 2.x war. - Ich habe es versucht und es hat nicht funktioniert. Ich überwand ein Problem: StringIO and cStringIO modules are gone in Python 3.0:, aber in ein anderes gestoßen:Bild in Zwischenablage in Python3 kopieren

TypeError: string argument expected, got 'bytes' 

daher wieder fragt die gleiche Frage wieder für Python 3 - Wie Bild kopieren in Python 3 in der Zwischenablage kopieren? Hier ist der Code, den ich habe bisher:

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) 

Dank

Antwort

4

Sie nicht StringIO hier wollen. Bilder sind rohe Binärdaten, und in Py3, str ist rein für Text, bytes und bytes-ähnliche Objekte (bytearray, zusammenhängende memoryview s, mmap s) sind für Binärdaten. Um Py2 StringIO.StringIO für Binärdaten zu ersetzen, möchten Sie io.BytesIO in Python 3, nicht io.StringIO verwenden.

+3

Getestet auf Windows 7 mit Kissen und PyWin32 219 und es funktionierte gut mit BytesIO –

+0

@MikeDriscoll: Danke für die Bestätigung. Ich werde die qualifizierte Sprache entfernen. – ShadowRanger

Verwandte Themen