2023-10-3 12:25:44 [显示全部楼层]
4050浏览
查看: 4050|回复: 6

[项目分享] 原神,启动!用python编一个原神自动启动器

[复制链接]
本帖最后由 qrm 于 2023-10-28 12:35 编辑

程序和使用教程放后面啦!务必仔细查看!

起初,灵感来源于网络上一些视频,伴随着Shed A Light的音乐,在一片白屏中,原神图标缓缓显现......
可是,这些都只是视频。可不可以制作一个程序,在检测到电脑白屏时,自动播放启动画面呢?

——原神自动启动器应运而生

首先,我设想使用pyautogui逐个获取每个像素点再叠加亮度
经过实践,1920x1080的屏幕,光是扫描一行就要10秒,1080行就是3个小时!

好吧,问ChatGPT,给出了解决方案:
使用mss来进行快速的屏幕截取,cv2进行图像转化,最后使用numpy对图像进行高效处理

源代码如下:(这里似乎不能缩进,看看就行
  1. import mss
  2. import numpy as np
  3. import cv2
  4. import pyautogui
  5. import pygame
  6. import time
  7. import ctypes
  8. file = open("GALS.txt", 'r')  # 打开文件
  9. setting_dict = file.read()  # 读取文件内容
  10. file.close()  # 关闭文件
  11. # 设置变量
  12. setting_dict = eval(setting_dict)
  13. launch_value = setting_dict["launch_value"]# 触发阈值
  14. front_shake = setting_dict["front_shake"]# 前摇时长
  15. change_time = setting_dict["change_time"]# 渐变间隔时间
  16. back_shake = setting_dict["back_shake"]# 后摇时长
  17. screen_width, screen_height = pyautogui.size()# 获取屏幕大小
  18. pygame.init()
  19. image = pygame.image.load("GALP.png")
  20. image.set_colorkey((255, 255, 255)) # 设置白色为色彩关键词(透明度)
  21. # 计算图片绘制的位置
  22. image_width, image_height = image.get_size()
  23. pic_x = (screen_width - image_width) // 2
  24. pic_y = (screen_height - image_height) // 2
  25. # 创建MSS(Multiple Screen Shots)对象
  26. with mss.mss() as sct:
  27.    while True:
  28.        # 设置截取区域为整个屏幕
  29.        monitor = {"top": 0, "left": 0, "width": screen_width, "height": screen_height}
  30.        # 截取屏幕图像
  31.        screenshot = np.array(sct.grab(monitor))
  32.        # 将图像转换为灰度图像
  33.        gray_image = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)
  34.        # 计算灰度图像的总亮度
  35.        total_brightness = np.sum(gray_image)
  36.        # 如果超过阈值,创建屏幕,将其提到最上层
  37.        if total_brightness >= launch_value:
  38.            flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN | pygame.NOFRAME
  39.            screen = pygame.display.set_mode((screen_width, screen_height), flags)
  40.            hwnd = pygame.display.get_wm_info()["window"]
  41.            screen.fill((255, 255, 255))
  42.            pygame.display.flip()
  43.            ctypes.windll.user32.SetWindowPos(hwnd, -1, 0, 0, 0, 0, 0x0001)
  44.            time.sleep(front_shake)
  45.            # 原神,启动!(透明度逐渐降低)
  46.            for alpha in range(0,100):
  47.                image.set_alpha(alpha)
  48.                screen.blit(image, (pic_x, pic_y))
  49.                pygame.display.flip()
  50.                time.sleep(change_time)
  51.            time.sleep(back_shake)
  52.            pygame.quit()
  53.        # 防止一直启动,亮度降下来后再开始下一次循环
  54.        while total_brightness >= launch_value * 0.98:
  55.            monitor = {"top": 0, "left": 0, "width": screen_width, "height": screen_height}
  56.            # 截取屏幕图像
  57.            screenshot = np.array(sct.grab(monitor))
  58.            # 将图像转换为灰度图像
  59.            gray_image = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)
  60.            # 计算灰度图像的总亮度
  61.            total_brightness = np.sum(gray_image)
复制代码
让我们看看最终效果吧!原神,启动!用python编一个原神自动启动器图1
衔接非常丝滑!
抱歉,由于上传文件大小限制,我不能在帖子中直接上传,请点击链接下载


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:24

原神,启动!用python编一个原神自动启动器图1
回复

使用道具 举报

qrm  初级技匠
 楼主|

发表于 2023-10-3 21:06:40


呃......试试右键“以管理员身份运行”?
回复

使用道具 举报

qrm  初级技匠
 楼主|

发表于 2023-10-3 21:16:23


刚刚搜了搜,也许是win10自带的那个杀毒软件误报了,也有可能没有管理员权限......
这种情况如果搞不好推荐上百度查查(毕竟我也没遇到过
回复

使用道具 举报

星辰之子  中级技师

发表于 2023-10-4 14:57:17

我直呼太6了
回复

使用道具 举报

qrm  初级技匠
 楼主|

发表于 2023-10-5 10:56:01

如果下载链接无效点这个!
https://qrm5106.lanzoul.com/b04wkt4sd
密码:1111
回复

使用道具 举报

AAAAAA  初级技师

发表于 2023-10-5 20:11:47

原神,启动!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail