2015-12-16 19 views
5

में क्लिपबोर्ड पर छवि कॉपी करें सबसे पहले, SO copy image to clipboard in python पर सवाल Write image to Windows clipboard in python with PIL and win32clipboard? का उत्तर देता है, जो केवल पायथन 2.x के लिए अच्छा था। - मैंने कोशिश की और यह काम नहीं किया। मैं एक समस्या से उबरे: StringIO and cStringIO modules are gone in Python 3.0:, लेकिन एक दूसरे से टकरा:Python3

TypeError: string argument expected, got 'bytes' 

इसलिए, फिर से पूछ अजगर 3 के लिए फिर से वही सवाल - कैसे अजगर 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 यहाँ नहीं करना चाहती: यहाँ कोड मैं अब तक मिल गया है है। छवियां कच्चे बाइनरी डेटा हैं, और पी 3 में, str पूरी तरह से पाठ के लिए है, bytes और bytes-जैसी वस्तुओं (bytearray, संगत memoryview एस, mmap एस) बाइनरी डेटा के लिए हैं। बाइनरी डेटा के लिए पीई 2 के StringIO.StringIO को प्रतिस्थापित करने के लिए, आप पाइथन 3 में io.BytesIO का उपयोग करना चाहते हैं, io.StringIO पर नहीं।

+3

तकिया और PyWin32 219 के साथ विंडोज 7 पर परीक्षण किया गया और यह बाइट्सियो –

+0

@ माइकड्रिस्कॉल के साथ ठीक काम करता है: पुष्टि के लिए धन्यवाद। मैं योग्य भाषा को हटा दूंगा। – ShadowRanger