使用Python Pyperclip复制图片遇报错,求助可行实现方案
解决方案
1. 修正依赖安装问题
你尝试安装的win32clipboard并非独立PyPI包,它是pywin32库的子模块。执行以下命令安装正确的依赖:
pip install pywin32
2. 实现PNG图片复制到剪贴板的代码
使用PIL(Pillow)和win32clipboard即可完成需求,以下是可直接运行的代码:
from PIL import Image import win32clipboard from io import BytesIO def copy_img_to_clipboard(img_path): # 打开图片并转换为剪贴板兼容的格式 with Image.open(img_path) as img: # 将图片转为RGB模式并保存为内存中的BMP格式 bmp_buffer = BytesIO() img.convert("RGB").save(bmp_buffer, format="BMP") # 剔除BMP文件头,仅保留设备无关位图(DIB)数据 dib_data = bmp_buffer.getvalue()[14:] # 操作剪贴板写入数据 win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardData(win32clipboard.CF_DIB, dib_data) win32clipboard.CloseClipboard() # 调用示例 copy_img_to_clipboard("img.png")
代码说明
- Windows剪贴板的
CF_DIB格式仅接受无文件头的BMP数据,因此需要剔除BMP文件的前14字节头信息。 - 使用
BytesIO在内存中处理图片数据,无需生成临时文件。 - 操作剪贴板后必须调用
CloseClipboard(),避免占用系统资源。
内容的提问来源于stack exchange,提问作者2nd Ethan
相关产品推荐
相关产品推荐

