为了在编写python代码的时候方便将图片复制到剪切板中,编写了下面函数,可以下载保存文件后直接调用。
#coding:utf-8
import win32clipboard
from io import BytesIO
from PIL import ImageGrab
# 图片写入表格
def send_msg_to_clip(msg, type_data=win32clipboard.RegisterClipboardFormat('image/png')):
"""
操作剪贴板分四步:
1. 打开剪贴板:OpenClipboard()
2. 清空剪贴板,新的数据才好写进去:EmptyClipboard()
3. 往剪贴板写入数据:SetClipboardData()
4. 关闭剪贴板:CloseClipboard()
:param type_data: 数据的格式,
unicode字符通常是传 win32con.CF_UNICODETEXT
:param msg: 要写入剪贴板的数据
"""
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(type_data, msg)
win32clipboard.CloseClipboard()
def img_to_clip(img):
# 声明output字节对象
output = BytesIO()
# 用BMP (Bitmap) 格式存储
# 这里是位图,然后用output字节对象来存储
img.save(output, 'BMP')
# BMP图片有14字节的header,需要额外去除
data = output.getvalue()[14:]
# 关闭
output.close()
# DIB: 设备无关位图(device-independent bitmap),名如其意
# BMP的图片有时也会以.DIB和.RLE作扩展名
# 设置好剪贴板的数据格式,再传入对应格式的数据,才能正确向剪贴板写入数据
send_msg_to_clip(data, win32clipboard.CF_DIB)
if __name__=='__main__':
img = ImageGrab.grab(bbox=(0,0,1920,1080))
img_to_clip(img)
参考:python 复制图片到剪贴板_Python3把图片复制到剪贴板https://blog.csdn.net/weixin_30345333/article/details/114913745?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-114913745-blog-113511797.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-114913745-blog-113511797.pc_relevant_antiscanv2&utm_relevant_index=2