赞
踩
利用python实现想要的结果,需要安装PyCharm软件,我使用的是PyCharm Community Edition 2023.1,下载安装请参考以下链接中的内容:
Python 3 教程 | 菜鸟教程 (runoob.com)https://m.runoob.com/python3/安装完成之后就可以开始进行编程了:
首先打开软件,进行创建新的项目:
标注1是保存的文件夹的名称,这个你可以随意取,位置按照你的习惯放,标注2点击就可创建了。
完成之后,你可以在左侧见到项目的所包含的文件。
这是我完成编程之后的文件图:
标注1就是我整个项目的文件,那个图片是我运行了代码所产生的图片;标注2就是我的外部库了,Python 3.7是解释器,下载安装完成之后要配置解释器,按照链接中的内容可以完成。
完成上述工作之后,在.py文件中编写代码。
我要完成的是利用python语言满足条件自动启动指定软件,那么应当怎样写呢?以下是我的思路:
你想进行自动打开指定软件,那么就需要引入相应模块,代码为:
import subprocess
这段代码作用是用于启动应用程序。
应用程序打开之后,有些可能没有完成打开,需要点击启动的按钮才能完全启动,比如一些游戏。于是我在代码中添加了此模块。
import pyautogui
此模块用于模拟鼠标和键盘操作。
由于我是利用截取屏幕计算其中的相应颜色的像素占比,我引入了Image模块。
from PIL import Image
用于处理截取的图像。
(注:python语言引入模块和C语言中的头文件类似,但是python的模块可以被执行。)
完成相应模块的引入,接下来就是对启动条件和启动软件的相应程序的编写。
首先我先写了软件启动的相应情况:
- def start_application(application_path):
- try:
- subprocess.Popen(application_path)
- print(f"成功启动应用程序:{application_path}")
- except Exception as e:
- print(f"启动应用程序失败:{e}")
解释:这里定义了一个start_application的函数,用于启动应用程序,其中application_path参数表示应用程序的路径。
try捕捉相应情况,如果使用了subprocess模块中的Popen函数启动程序,打印成功启动应用程序,并显示出路径。而出现异常,打印启动应用程序失败,并将异常赋值给e。(注:这里的e可以随意更改为你想要的变量,但是为了保证代码的可读性和可维护性,常用e来表示,因为e是异常(exception)的缩写)。
这是我启动程序发生的异常情况:
从上图可以看出,我打印了屏幕中白色像素占比,那么我就需要进行对截取的图像计算白色像素占比,以下是代码:
- def calculate_white_pixel_percentage(image):
- width, height = image.size
- white_pixels = 0
-
- for x in range(width):
- for y in range(height):
- pixel = image.getpixel((x, y))
- if pixel == (255, 255, 255): # 假设白色像素的RGB值为(255, 255, 255)
- white_pixels += 1
-
- total_pixels = width * height
- white_pixel_percentage = (white_pixels / total_pixels) * 100
- return white_pixel_percentage
解释:在本段代码中定义了一个calculate_white_pixel_percentage函数,接收参数Image数据,表示要计算的图像。
将图像的宽度和高度分别赋值给参数width、height,white_pixels = 0表示开始储存的白色像素为0;
接下来就是数白色像素的数量:前两句代码都是遍历图像的宽度和高度,这其实就是数每一个像素,然后将指定坐标的像素赋值给pixel,其次进行判断,我这里设白色像素的RGB值为(225,225,225)。(注:一般情况下,白色像素的RGB值就是(225,225,225),但是有一些特殊的图像处理库可能不一样,记得查询相关资料,获得数值。)判断完成之后,如果是white_pixels加一,说明有一个白色像素存入,反之没有存入。
最后进行计算占比:先计算总量,其次计算白色像素占比,最后返回白色像素的占比。
完成了条件计算和应用程序情况说明,最后写出主程序来完成整个代码的实现。
这是我的主程序:
- if __name__ == "__main__":
- application_path = "D:/原神/Genshin Impact/launcher.exe" # 替换为您想要启动的应用程序的路径
- # 使用pyautogui的hotkey()函数切换屏幕显示
- pyautogui.hotkey("alt", "tab")
- # 等待切换后的屏幕稳定
- pyautogui.sleep(1)
- screenshot = pyautogui.screenshot()
- screenshot.save("screenshot.png")
- image = Image.open("screenshot.png")
- white_pixel_percentage = calculate_white_pixel_percentage(image)
- print(f"屏幕中白色像素占比:{white_pixel_percentage}%")
-
- if white_pixel_percentage > 0.1:
- start_application(application_path)
- # 加入延迟以确保应用程序完全启动
- pyautogui.sleep(1)
- # 假设按钮的位置是(x, y),使用pyautogui的click()函数模拟鼠标点击
- button_position = (1395, 821) # 替换为您的按钮坐标
- pyautogui.click(button_position)
我在其中写了一些注释,可以查看注释得知其中的作用,其中
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")
image = Image.open("screenshot.png")
这三句代码,先是对屏幕进行截图,然后进行存储,最后赋值给image参数。
完成之后,计算白色像素占比,并打印白色像素占比情况。
接下来就是判断,如果占比大于设定值,就启动应用程序。
这里呢,因为我启动的是原神的启动器,有着按钮才能进入,所以于是有写了一个python代码来获取按钮坐标,并填入其中,实现打开启动器,并自动进入游戏。
(注意:要获取按钮代码,一定要自行打开应用程序,然后打开pycharm并将它缩小,反正能够看到按钮,其次将鼠标放到按钮上,按shift+f10,运行程序,获取坐标。)
提醒:有些应用程序的启动需要管理员权限,所以启动pycharm时利用管理员权限启动,或者在代码中添加权限。
要想获取代码,请查看我上传的代码资源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。