原神,启动!用python编一个原神自动启动器
本帖最后由 qrm 于 2023-10-28 12:35 编辑程序和使用教程放后面啦!务必仔细查看!
起初,灵感来源于网络上一些视频,伴随着Shed A Light的音乐,在一片白屏中,原神图标缓缓显现......
可是,这些都只是视频。可不可以制作一个程序,在检测到电脑白屏时,自动播放启动画面呢?
——原神自动启动器应运而生
首先,我设想使用pyautogui逐个获取每个像素点再叠加亮度
经过实践,1920x1080的屏幕,光是扫描一行就要10秒,1080行就是3个小时!
好吧,问ChatGPT,给出了解决方案:
使用mss来进行快速的屏幕截取,cv2进行图像转化,最后使用numpy对图像进行高效处理
源代码如下:(这里似乎不能缩进,看看就行)
import mss
import numpy as np
import cv2
import pyautogui
import pygame
import time
import ctypes
file = open("GALS.txt", 'r')# 打开文件
setting_dict = file.read()# 读取文件内容
file.close()# 关闭文件
# 设置变量
setting_dict = eval(setting_dict)
launch_value = setting_dict["launch_value"]# 触发阈值
front_shake = setting_dict["front_shake"]# 前摇时长
change_time = setting_dict["change_time"]# 渐变间隔时间
back_shake = setting_dict["back_shake"]# 后摇时长
screen_width, screen_height = pyautogui.size()# 获取屏幕大小
pygame.init()
image = pygame.image.load("GALP.png")
image.set_colorkey((255, 255, 255)) # 设置白色为色彩关键词(透明度)
# 计算图片绘制的位置
image_width, image_height = image.get_size()
pic_x = (screen_width - image_width) // 2
pic_y = (screen_height - image_height) // 2
# 创建MSS(Multiple Screen Shots)对象
with mss.mss() as sct:
while True:
# 设置截取区域为整个屏幕
monitor = {"top": 0, "left": 0, "width": screen_width, "height": screen_height}
# 截取屏幕图像
screenshot = np.array(sct.grab(monitor))
# 将图像转换为灰度图像
gray_image = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)
# 计算灰度图像的总亮度
total_brightness = np.sum(gray_image)
# 如果超过阈值,创建屏幕,将其提到最上层
if total_brightness >= launch_value:
flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN | pygame.NOFRAME
screen = pygame.display.set_mode((screen_width, screen_height), flags)
hwnd = pygame.display.get_wm_info()["window"]
screen.fill((255, 255, 255))
pygame.display.flip()
ctypes.windll.user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0, 0x0001)
time.sleep(front_shake)
# 原神,启动!(透明度逐渐降低)
for alpha in range(0,100):
image.set_alpha(alpha)
screen.blit(image, (pic_x, pic_y))
pygame.display.flip()
time.sleep(change_time)
time.sleep(back_shake)
pygame.quit()
# 防止一直启动,亮度降下来后再开始下一次循环
while total_brightness >= launch_value * 0.98:
monitor = {"top": 0, "left": 0, "width": screen_width, "height": screen_height}
# 截取屏幕图像
screenshot = np.array(sct.grab(monitor))
# 将图像转换为灰度图像
gray_image = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)
# 计算灰度图像的总亮度
total_brightness = np.sum(gray_image)
让我们看看最终效果吧!
衔接非常丝滑!
抱歉,由于上传文件大小限制,我不能在帖子中直接上传,请点击链接下载
Genshin Automatic Launcher.zip
FORTEST.zip
如果下载链接无效看评论
-----------
使用方法:GALS.txt中的四个值分别代表着触发阈值、前摇时长、渐变间隔时间和后摇时长,可以修改,后三个单位为秒,已经帮调好了,可以不用改
触发阈值则要自己微调。方法如下:
打开FORTEST.exe,控制台输出的是最大亮度。接下来,将电脑屏幕搞成全白(推荐这个网址用于测试:屏幕检测工具),最后返回控制台窗口,最后一个值就是你电脑全白时的亮度啦!
注意,在设置触发阈值时,一般可以设置最大亮度为全白时亮度的98%效果更好,具体依个人而异
最后,双击打开GAL.exe,过几秒就好了,不会有提示(把这个程序设为开机自启动是个不错的选择哦)
如想关闭,在任务管理器里面将其关闭
再次提醒:双击,过几秒就自动打开了,只有在任务管理器中将其关闭
-----------
请仔细阅读使用说明!
软件本身无毒,杀毒软件会误报,请将软件添加到杀毒软件白名单
本程序为作者原创,如需转载请注明出处(https://mc.dfrobot.com.cn/thread-317041-1-1.html)
另外,程序如有任何问题或有疑问,随时都可以向我提出哟!
涛靖周 发表于 2023-10-3 21:04
呃......试试右键“以管理员身份运行”? 涛靖周 发表于 2023-10-3 21:04
刚刚搜了搜,也许是win10自带的那个杀毒软件误报了,也有可能没有管理员权限......
这种情况如果搞不好推荐上百度查查(毕竟我也没遇到过 我直呼{:6_213:}太6了 如果下载链接无效点这个!
https://qrm5106.lanzoul.com/b04wkt4sd
密码:1111 原神,启动!!!!!!!!!!!!!!!!!!!
页:
[1]