图像不稳定,换台设备就找不到图像?试试这个方法,用一条指令适配
评论
收藏

图像不稳定,换台设备就找不到图像?试试这个方法,用一条指令适配

经验分享
云烟
2024-05-06 17:48·浏览量:602
云烟
发布于 2024-05-06 17:48602浏览


背景

当元素无法精准捕获的时候,大家都会考虑到用点击图像指令,但是图像局限性较高,会受到当前设备的分辨率和缩放影响,因此当我们写完一个流程,需要在其他设备运行,或者分享给企业其他的用户,图像可能会失效,这个时候我们的解决方案往往需要在新设备上重新捕获,但是当图像过多,或分享的人设备过多,工作量将会很庞大,那有没有一种方式,可以让创建好的流程(包含图像),换台设备之后,所有图像能根据设备自适应去调整呢?

思路

第一件事,当然是找到图像受到什么影响,由于设备限制,本次仅仅在两台设备上进行测试,若存在局限性,欢迎大家补充。

系统分辨率1920*1080,缩放100时,捕获图片尺寸为655*46

系统分辨率1920*1080,缩放125时,捕获图片尺寸为818*57

系统分辨率1280*720,缩放100时,捕获图片尺寸为655*46

系统分辨率1280*720,缩放100时,捕获图片尺寸为818*57

综上,暂且认定为屏幕缩放影响捕获的图片尺寸。

其次,我们要知道,我们开发的应用信息,都保存在本地,而图片必然都存放在该应用某个特定文件夹,因此我们只需要找到对应的文件夹,根据本机的缩放比例,将文件夹里面所有的图片,进行尺寸调整,使新设备也能进行更改

理论可行,实践开始!

实现

1.找到影刀应用文件存放的文件夹

有现成指令


2.找到图片对应文件夹

为了保证只更改当前应用的图像,则需锁定当前应用的uuid文件夹,也有现成指令,获得uuid之后,在影刀文件路径中查找uuid文件夹的完整路径,进而得到图片的完整存放路径

3.获取开发设备和本机的缩放比例

由于开发设备具体参数无法获得,因此在开发流程的时候需要先设定一个参数进行传入,例如开发设备缩放比例为1,则设置变量定义一个数为1.0,便于其他设备获取时可进行对比。

本设备如何获取缩放,直接复制下面代码模块即可,通过两个分辨率的比例获得缩放比例。

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import win32api, win32con, win32gui, win32com, win32print
from win32.lib import win32con
import tkinter as tk 

def main(args):
    pass

# 本机分辨率
def res():
    hdc = win32gui.GetDC(0)
    w = win32print.GetDeviceCaps(hdc, win32con.DESKTOPHORZRES)
    h = win32print.GetDeviceCaps(hdc, win32con.DESKTOPVERTRES)
    return w

# 显示屏缩放后分辨率
def res2():
    root = tk.Tk()
    a=root.winfo_screenwidth()
    return a

# 缩放比例
def ratio():
    return res()/res2()


4.循环修改图片尺寸

太方便了,修改尺寸又有指令实现,修改后再重命名将原图片进行覆盖


5.封装成指令

添加输入参数,封装成指令,后续开发过程中如果用到图像,则将该指令放到流程第一行即可,其他设备获取后运行前都会自动调整。


完整流程


效果

开发应用时,将指令拖到流程第一行,并输入本设备缩放即可


补充

后续有其他发现再补充,条件有限,测试设备较少,有问题欢迎留言




收藏9
全部评论1
最新
发布评论
评论