Python 是否将图像复制到剪贴板?
首先,关于SO的问题引出了答案,这只适用于Python 2.x我试过了,但没用。我克服了一个问题,但遇到了另一个问题:Python 是否将图像复制到剪贴板?,python,windows,python-3.x,clipboard,Python,Windows,Python 3.x,Clipboard,首先,关于SO的问题引出了答案,这只适用于Python 2.x我试过了,但没用。我克服了一个问题,但遇到了另一个问题: TypeError: string argument expected, got 'bytes' 因此,我们再次向Python3提出同样的问题——如何在Python3中将图像复制到剪贴板?以下是我目前掌握的代码: from io import StringIO import win32clipboard from PIL import Image def send_to_c
TypeError: string argument expected, got 'bytes'
因此,我们再次向Python3提出同样的问题——如何在Python3中将图像复制到剪贴板?以下是我目前掌握的代码:
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)用于二进制数据。要替换二进制数据的Py2的StringIO.StringIO
,您需要在Python 3中使用io.BytesIO
,而不是io.StringIO,您可以使用winclip32将位图图像复制到剪贴板
安装:
副本:
对于那些想要复制粘贴的人
# parameter must be a PIL image
def send_to_clipboard(image):
output = BytesIO()
image.convert('RGB').save(output, 'BMP')
data = output.getvalue()[14:]
output.close()
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data)
win32clipboard.CloseClipboard()
我复制了代码并用BytesIO替换了StringIO,它成功了!(使用*.jpg和*.png文件)非常感谢
from io import BytesIO
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 = 'Ico2.png'
image = Image.open(filepath)
output = BytesIO()
image.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
send_to_clipboard(win32clipboard.CF_DIB, data)
使用pillow和PyWin32 219在Windows 7上进行测试,并且在BytesIO@MikeDriscoll:谢谢你的确认。我将删除限定的语言。格式必须为BMP,任何人都要获得不同的格式
# parameter must be a PIL image
def send_to_clipboard(image):
output = BytesIO()
image.convert('RGB').save(output, 'BMP')
data = output.getvalue()[14:]
output.close()
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data)
win32clipboard.CloseClipboard()
from io import BytesIO
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 = 'Ico2.png'
image = Image.open(filepath)
output = BytesIO()
image.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
send_to_clipboard(win32clipboard.CF_DIB, data)