python单点击屏幕四个位置分别截图并复制粘贴到wps word文档中

import io
from tkinter import Tk, PhotoImage
import numpy as np
from PIL import ImageGrab, Image
import cv2
import time
import pyautogui
import subprocess
import pyperclip
import io
# BytesIO是操作二进制数据的模块
from io import BytesIO

# pip install pywin32, win32clipboard是操作剪贴板的模块
import win32clipboard
import win32con as wc
import keyboard


def send_msg_to_clip(type_data, msg):
    """
    操作剪贴板分四步:
    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 paste_img(file_img):
    """
    图片转换成二进制字符串,然后以位图的格式写入剪贴板

    主要思路是用Image模块打开图片,
    用BytesIO存储图片转换之后的二进制字符串

    :param file_img: 图片的路径
    """
    # 把图片写入image变量中
    # 用open函数处理后,图像对象的模式都是 RGB
    image = Image.open(file_img)

    # 声明output字节对象
    output = BytesIO()

    # 用BMP (Bitmap) 格式存储
    # 这里是位图,然后用output字节对象来存储
    image.save(output, 'BMP')

    # BMP图片有14字节的header,需要额外去除
    data = output.getvalue()[14:]

    # 关闭
    output.close()

    # DIB: 设备无关位图(device-independent bitmap),名如其意
    # BMP的图片有时也会以.DIB和.RLE作扩展名
    # 设置好剪贴板的数据格式,再传入对应格式的数据,才能正确向剪贴板写入数据
    send_msg_to_clip(win32clipboard.CF_DIB, data)

def main(file_image):
    paste_img(file_image)

def parse():
    win32clipboard.OpenClipboard()
# 获取粘贴板内容,既然是获取,那么只需要一个参数即可 # 会返回已经使用 Ctrl + C 复制的内容
    data = win32clipboard.GetClipboardData(wc.CF_DIB) # 关闭复制粘贴板
    win32clipboard.CloseClipboard() # 然后随便 Ctrl+C 拷贝一段内容 # 下面就会将拷贝的内容打印出来
   # print(data.decode("gbk"))
    # pyautogui.hotkey('ctrl', 'v')
    # 模拟按下Ctrl+V
    try:
        keyboard.press_and_release('ctrl+v')
    except BaseException as e:
        if isinstance(e, KeyboardInterrupt):
            print(e)

# 为确保粘贴完成,可以添加延迟
    time.sleep(0.5)



#点击后先睡眠3s
time.sleep(3);
pyautogui.moveTo(793, 57)
pyautogui.click()
#第1张图
img = ImageGrab.grab(bbox=(1197, 141, 1905, 1002))  # bbox 定义左、上、右和下像素的4元组
# print(img.size[1], img.size[0])
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
# print(img)  # python学习交流:903971231#
cv2.imwrite('screenshot1.jpg', img)
img = Image.fromarray(img)
img.save('screenshot1.jpg')

time.sleep(0.2);
#第2张图
pyautogui.moveTo(835, 57)
pyautogui.click()
img2 = ImageGrab.grab(bbox=(1197, 141, 1905, 1002))  # bbox 定义左、上、右和下像素的4元组
img2 = np.array(img2.getdata(), np.uint8).reshape(img2.size[1], img2.size[0], 3)
cv2.imwrite('screenshot2.jpg', img2)
img2 = Image.fromarray(img2)
img2.save('screenshot2.jpg')

time.sleep(0.2);
#第3张图
pyautogui.moveTo(867, 57)
pyautogui.click()
img3 = ImageGrab.grab(bbox=(1197, 141, 1905, 1002))  # bbox 定义左、上、右和下像素的4元组
img3 = np.array(img3.getdata(), np.uint8).reshape(img3.size[1], img3.size[0], 3)
cv2.imwrite('screenshot3.jpg', img3)
img3 = Image.fromarray(img3)
img3.save('screenshot3.jpg')

time.sleep(0.2);
#第4张图
pyautogui.moveTo(908, 57)
pyautogui.click()
img4 = ImageGrab.grab(bbox=(1197, 141, 1905, 1002))  # bbox 定义左、上、右和下像素的4元组
img4 = np.array(img4.getdata(), np.uint8).reshape(img4.size[1], img4.size[0], 3)
cv2.imwrite('screenshot4.jpg', img4)
img4 = Image.fromarray(img4)
img4.save('screenshot4.jpg')

# 打开wps
subprocess.call(['C:\Program Files (x86)\Kingsoft Office Software\WPS Office\ksolaunch.exe'])
# pyperclip.paste()
time.sleep(0.5);
main("screenshot1.jpg")
time.sleep(0.5);
parse()
time.sleep(0.5);
main("screenshot2.jpg")
time.sleep(0.5);
parse()
time.sleep(0.5);
main("screenshot3.jpg")
time.sleep(0.5);
parse()
time.sleep(0.5);
main("screenshot4.jpg")
time.sleep(0.5);
parse()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值