使用PIL和win32clipboard在python中将图像写入Windows剪贴板?

foo*_*ion 4 python pywin32 python-imaging-library

我正在尝试打开图像文件并将图像复制到Windows剪贴板.有没有办法来解决这个问题:

import win32clipboard
from PIL import Image

def send_to_clipboard(clip_type, data): 
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(clip_type, data) 
    win32clipboard.CloseClipboard()

clip_type = win32clipboard.CF_BITMAP
filepath = 'c:\\temp\\image.jpg'

im = Image.open(filepath) 
data = im.tobitmap() # fails with valueerror: not a bitmap
# data = im.tostring() runs, but receiving programs can't read the results
send_to_clipboard(clip_type, data)
Run Code Online (Sandbox Code Playgroud)

我可以安装PythonMagick等,但是不希望为一次性程序安装另一个库

cgo*_*lke 8

from cStringIO 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)
Run Code Online (Sandbox Code Playgroud)

  • 对于python 3,需要修改如下两行——`from io import BytesIO` ... `output = BytesIO()` (2认同)