Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本 您所在的位置:网站首页 lol脚本用什么编写的软件 Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本

Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本

2024-06-27 03:10| 来源: 网络整理| 查看: 265

Python 在windows上跑图色脚本?简单又好玩,自己编写一个自动化脚本 大家好 我又来开新坑了,如图这次准备用python弄个简单脚本(根据图色判断进行键鼠操作) 1.老规矩 先安排运行环境

编译平台:pycharm python版本最低请安装3.5.2 最高3.8(有些模块有要求最好这么来)

这是我初步import的模块库,不用一次性装好,咱们后面用到啥就装啥 这边先给个图片看个大概 import cv2,sys,win32api, win32con,win32gui,win32gui,win32print,time,json,pywebio,os,shutil,ctypes from ctypes import wintypes import numpy as np # from PyQt5.QtWidgets import QApplication from PIL import Image, ImageGrab from pywebio.output import * from pywebio import start_server from pywebio.input import * from pyautogui import * from sys import _getframe from builtins import print as _print # from pynput.keyboard import Controller, Key, Listener

在这里插入图片描述

一、首先搞定图片的获取(像素点的获取) 思路:先搞定截屏;再搞定截指定窗口的图片;读图片;获取图片数据;获取图片指定像素点的RGB或者16进制色值 (1)通过PIL模块截图

安装库:Pillow(PIL)库

from PIL import Image, ImageGrab def cutphoto(): global img img = ImageGrab.grab((x1, y1, x2, y2)) img.save("1.png") return img cutphoto()

(x1,y1,x2,y2)为截图范围的坐标点 注意这里ImageGrab.grab函数里面的参数填的是tuple类型的(带上括号) 运行后可以在当前目录下生成一个 1.png 的图片

(2)获取指定窗口的坐标并截图(非后台,这里只直接置顶窗口截图)

安装库:Pillow(PIL)库、pywin32(win32)库 工具:lookhandles 2.3(获取窗口句柄的工具) 把放大镜移到窗口上就可以看到窗口信息,我们通过这个工具可以快速找到自己想要的窗口信息 需要用到的窗口信息包括: 窗口句柄、窗口类名、窗口标题 这里主要看 父类信息 在这里插入图片描述 这里就先以系统自带的画图工具为例 窗口句柄:2887048 窗口类名:MSPaintApp 窗口标题:无标题-画图

思路清晰的同学们应该可以感觉到,这里只有类目是固定的,咱们就用类名为依据去找窗口

import win32api, win32con,win32gui,win32gui,win32print handle =win32gui.FindWindow(classname, name)#句柄 #这里classname就是类名,name是标题名字,二者填其一即可 #例如handle =win32gui.FindWindow('MSPaintApp', None)

运行:

import win32api, win32con,win32gui,win32gui,win32print handle =win32gui.FindWindow('MSPaintApp', None) print(handle)

打印结果为:2887048

后面成型就是这样(看备注基本就了解了):

import win32api, win32con,win32gui,win32gui,win32print,time handle = win32gui.FindWindow('MSPaintApp', None)#句柄 win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0) # 发送还原最小化窗口的信息 (x1, y1, x2, y2) = get_window_pos_handle(handle)#根据句柄获取应用窗口坐标 win32gui.SetWindowPos(handle, win32con.HWND_TOPMOST, -7,0, x2 - x1+14, y2 - y1+7, win32con.SWP_SHOWWINDOW) # 移动左上角并置顶 x1, y1, x2, y2 = 0, 0, x2 - x1, y2 - y1 # 重置应用窗口坐标 time.sleep(0.001) # 延迟防截图黑屏

运行结果就是 画图工具自动移动到窗口左上角并顶置 PS:因为windows的程序窗口有毛玻璃效果 win32的自动坐标需要-7像素,宽度+7x2=14像素,高度+7像素 保证不会改变原窗口大小

将其封装成一个初始化函数init() 如下所示

import win32api, win32con,win32gui,win32gui,win32print,time def init(name=None,classname=None,handles=None): global x1, y1, x2, y2, handle,keepscreenflag,keepscreenflag2 keepscreenflag = False#保持屏幕全局参数1 keepscreenflag2 = False#保持屏幕全局参数2 if name == None and classname == None and handles == None:#3个参数全为None时 默认截取全屏 print('init():init value empty,cut the whole screen') hDC = win32gui.GetDC(0) wide = win32print.GetDeviceCaps(hDC, win32con.DESKTOPHORZRES)#获取全屏的宽度 high = win32print.GetDeviceCaps(hDC, win32con.DESKTOPVERTRES)#获取全屏的窗口高度 x1, y1, x2, y2 = 0, 0, wide, high # 重置应用窗口坐标 time.sleep(0.001) # 延迟防截图黑屏 return keepscreenflag,keepscreenflag2#保持屏幕全局参数 else: handle =handles or win32gui.FindWindow(classname, name)#句柄 没填句柄则按类名或者标题名锁定句柄 win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0) # 发送还原最小化窗口的信息 (x1, y1, x2, y2) = get_window_pos_handle(handle)#根据句柄获取应用窗口坐标 win32gui.SetWindowPos(handle, win32con.HWND_TOPMOST, -7,0, x2 - x1+14, y2 - y1+7, win32con.SWP_SHOWWINDOW) # 移动左上角并置顶 x1, y1, x2, y2 = 0, 0, x2 - x1, y2 - y1 # 重置应用窗口坐标 time.sleep(0.001) # 延迟防截图黑屏 return keepscreenflag, keepscreenflag2#保持屏幕全局参数

如此,结合(1)、(2)两节 就可以完成窗口的初始化 和 截图功能

(3)根据坐标点获取色值

安装库:Pillow(PIL)库、pywin32(win32)库 工具:取色工具 大漠、叉叉助手、触动精灵等 随便啥取色工具都可以

未完待续。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有