首先,在python中将 SO 复制图像复制到剪贴板的问题导致回答使用PIL和win32clipboard在python中将图像写入Windows剪贴板?,这对Python 2.x只有好处. - 我试了一下它没用.我克服了一个问题:StringIO和cStringIO模块在Python 3.0中消失了:但是碰到了另一个:
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)
谢谢
你不想StringIO
在这里.图像是原始二进制数据,并且在PY3,str
纯粹是为了文本,bytes
和bytes
样对象(bytearray
的,连续的memoryview
S,mmap
S)是用于二进制数据.要替换StringIO.StringIO
二进制数据的Py2 ,你想io.BytesIO
在Python 3中使用,而不是io.StringIO
.