当前位置:  开发笔记 > 编程语言 > 正文

在Python3中将图像复制到剪贴板

如何解决《在Python3中将图像复制到剪贴板》经验,为你挑选了1个好方法。

首先,在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)

谢谢



1> ShadowRanger..:

你不想StringIO在这里.图像是原始二进制数据,并且在PY3,str纯粹是为了文本,bytesbytes样对象(bytearray的,连续的memoryviewS,mmapS)是用于二进制数据.要替换StringIO.StringIO二进制数据的Py2 ,你想io.BytesIO在Python 3中使用,而不是io.StringIO.


在带有枕头和PyWin32 219的Windows 7上进行了测试,它与BytesIO配合使用
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有