ms-vite-plugin 1.4.78 → 1.4.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/luaObfuscator/addVararg.js +1 -1
- package/dist/luaObfuscator/flatten.js +1 -1
- package/dist/luaObfuscator/rename.js +1 -1
- package/dist/luaObfuscator/scope.js +1 -1
- package/docs/api/global.md +0 -85
- package/docs/api/image.md +72 -111
- package/docs/api/ui.md +9 -39
- package/docs/apicn/global.md +0 -54
- package/docs/apicn/image.md +63 -104
- package/docs/apicn/ui.md +12 -40
- package/docs/apilua/image.md +79 -81
- package/docs/apilua/ui.md +12 -44
- package/docs/apipython/g.md +0 -81
- package/docs/apipython/image.md +61 -103
- package/docs/apipython/ui.md +6 -36
- package/package.json +1 -1
package/docs/apilua/ui.md
CHANGED
|
@@ -73,7 +73,6 @@ UI 模块提供了 WebView 相关功能,支持事件通信和 JavaScript 交
|
|
|
73
73
|
|
|
74
74
|
## 核心方法
|
|
75
75
|
|
|
76
|
-
|
|
77
76
|
### show - 显示 WebView。
|
|
78
77
|
|
|
79
78
|
```lua
|
|
@@ -117,7 +116,6 @@ function eval(code) end
|
|
|
117
116
|
ui.eval("document.title = 'KuaiJS'")
|
|
118
117
|
```
|
|
119
118
|
|
|
120
|
-
|
|
121
119
|
### onEvent - 设置事件回调函数
|
|
122
120
|
|
|
123
121
|
```lua
|
|
@@ -129,9 +127,9 @@ function onEvent(onEvent) end
|
|
|
129
127
|
|
|
130
128
|
**参数:**
|
|
131
129
|
|
|
132
|
-
| 参数名 | 类型
|
|
133
|
-
| --------- |
|
|
134
|
-
| `onEvent` | ((event: string, data: table) => void) 或 nil | 是
|
|
130
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
131
|
+
| --------- | --------------------------------------------- | -------- | ------ | ------------------------------------------------------- |
|
|
132
|
+
| `onEvent` | ((event: string, data: table) => void) 或 nil | 是 | | 事件回调函数,用于处理来自网页的事件,传 `nil` 取消监听 |
|
|
135
133
|
|
|
136
134
|
**示例:**
|
|
137
135
|
|
|
@@ -152,10 +150,10 @@ function call(key, data) end
|
|
|
152
150
|
|
|
153
151
|
**参数:**
|
|
154
152
|
|
|
155
|
-
| 参数名 | 类型
|
|
156
|
-
| ------ |
|
|
157
|
-
| `key` | string
|
|
158
|
-
| `data` | table
|
|
153
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
154
|
+
| ------ | ------ | -------- | ------ | ----------------- |
|
|
155
|
+
| `key` | string | 是 | | JavaScript 方法名 |
|
|
156
|
+
| `data` | table | 是 | | 传递给方法的参数 |
|
|
159
157
|
|
|
160
158
|
**示例:**
|
|
161
159
|
|
|
@@ -307,7 +305,7 @@ ui.alert("操作完成", "脚本执行完成,共处理了100个项目")
|
|
|
307
305
|
```typescript
|
|
308
306
|
declare function registerUIFunc(
|
|
309
307
|
name: string,
|
|
310
|
-
func: (data: Record<string, any>) => void
|
|
308
|
+
func: (data: Record<string, any>) => void,
|
|
311
309
|
): void;
|
|
312
310
|
```
|
|
313
311
|
|
|
@@ -333,9 +331,8 @@ declare function registerUIFunc(
|
|
|
333
331
|
<script>
|
|
334
332
|
// 注册供主进程调用的函数
|
|
335
333
|
ms.registerUIFunc("updateStatus", function (data) {
|
|
336
|
-
document.getElementById(
|
|
337
|
-
|
|
338
|
-
).textContent = `状态: ${data.status}, 进度: ${data.progress}%`;
|
|
334
|
+
document.getElementById("status").textContent =
|
|
335
|
+
`状态: ${data.status}, 进度: ${data.progress}%`;
|
|
339
336
|
});
|
|
340
337
|
|
|
341
338
|
ms.registerUIFunc("loadData", function (data) {
|
|
@@ -708,35 +705,6 @@ ms.getDeviceID()
|
|
|
708
705
|
});
|
|
709
706
|
```
|
|
710
707
|
|
|
711
|
-
#### getServerDeviceId - 获取服务器设备 ID
|
|
712
|
-
|
|
713
|
-
```typescript
|
|
714
|
-
declare function getServerDeviceId(): Promise<string>;
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
**返回值:**
|
|
718
|
-
|
|
719
|
-
| 类型 | 描述 |
|
|
720
|
-
| ----------------- | ------------- |
|
|
721
|
-
| `Promise<string>` | 服务器设备 ID |
|
|
722
|
-
|
|
723
|
-
**说明:**
|
|
724
|
-
|
|
725
|
-
获取当前运行脚本的服务器设备 ID。
|
|
726
|
-
|
|
727
|
-
**网页端示例:**
|
|
728
|
-
|
|
729
|
-
```javascript
|
|
730
|
-
// 获取服务器设备ID
|
|
731
|
-
ms.getServerDeviceId()
|
|
732
|
-
.then((deviceId) => {
|
|
733
|
-
console.log("当前服务器设备ID:", deviceId);
|
|
734
|
-
})
|
|
735
|
-
.catch((error) => {
|
|
736
|
-
console.error("获取服务器设备ID出错:", error);
|
|
737
|
-
});
|
|
738
|
-
```
|
|
739
|
-
|
|
740
708
|
#### getAuthCardNo - 获取缓存的授权卡密
|
|
741
709
|
|
|
742
710
|
```typescript
|
|
@@ -745,8 +713,8 @@ declare function getAuthCardNo(): Promise<string>;
|
|
|
745
713
|
|
|
746
714
|
**返回值:**
|
|
747
715
|
|
|
748
|
-
| 类型 | 描述
|
|
749
|
-
| ----------------- |
|
|
716
|
+
| 类型 | 描述 |
|
|
717
|
+
| ----------------- | -------------------------------------------------- |
|
|
750
718
|
| `Promise<string>` | 有缓存的授权卡密时返回卡密字符串,否则返回空字符串 |
|
|
751
719
|
|
|
752
720
|
**说明:**
|
package/docs/apipython/g.md
CHANGED
|
@@ -293,84 +293,3 @@ def on_exception() -> None:
|
|
|
293
293
|
|
|
294
294
|
g.setExceptionCallback(on_exception)
|
|
295
295
|
```
|
|
296
|
-
|
|
297
|
-
#### `loadDex` - 加载指定的 dex、apk 文件
|
|
298
|
-
|
|
299
|
-
**注意:**
|
|
300
|
-
|
|
301
|
-
- 仅在 Android 平台可用
|
|
302
|
-
|
|
303
|
-
```python
|
|
304
|
-
def loadDex(dexPath: str) -> bool
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
**参数:**
|
|
308
|
-
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|
|
309
|
-
| ---- | ---- | ---- | ------ | ---- |
|
|
310
|
-
| `dexPath` | str | 是 | - | Dex 或 APK 文件的路径 |
|
|
311
|
-
|
|
312
|
-
**返回值:**
|
|
313
|
-
|
|
314
|
-
**返回值:**
|
|
315
|
-
|
|
316
|
-
| 类型 | 描述 |
|
|
317
|
-
| ------ | --------------------- |
|
|
318
|
-
| `bool` | 是否成功加载 Dex 文件 |
|
|
319
|
-
|
|
320
|
-
**示例:**
|
|
321
|
-
|
|
322
|
-
```python
|
|
323
|
-
from kuaijs import g
|
|
324
|
-
g.loadDex("/sdcard/classes.dex")
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
#### `getContext` - 获取安卓上下文
|
|
328
|
-
|
|
329
|
-
**注意:**
|
|
330
|
-
|
|
331
|
-
- 仅在 Android 平台可用
|
|
332
|
-
|
|
333
|
-
```python
|
|
334
|
-
def getContext() -> dict
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**返回值:**
|
|
338
|
-
|
|
339
|
-
- `dict` 当前安卓上下文对象
|
|
340
|
-
|
|
341
|
-
**示例:**
|
|
342
|
-
|
|
343
|
-
```python
|
|
344
|
-
from kuaijs import g
|
|
345
|
-
ctx = g.getContext()
|
|
346
|
-
print(ctx)
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
#### `importClass` - 导入类对象
|
|
350
|
-
|
|
351
|
-
**注意:**
|
|
352
|
-
|
|
353
|
-
- 仅在 Android 平台可用
|
|
354
|
-
|
|
355
|
-
```python
|
|
356
|
-
def importClass(className: str) -> any
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
**参数:**
|
|
360
|
-
|
|
361
|
-
| 参数 | 类型 | 必需 | 默认值 | 描述 |
|
|
362
|
-
| ----------- | ---- | ---- | ------ | ---------------------- |
|
|
363
|
-
| `className` | str | 是 | - | 类名(包含完整包路径) |
|
|
364
|
-
|
|
365
|
-
**返回值:**
|
|
366
|
-
|
|
367
|
-
| 类型 | 描述 |
|
|
368
|
-
| ----- | ------ |
|
|
369
|
-
| `any` | 类对象 |
|
|
370
|
-
|
|
371
|
-
**示例:**
|
|
372
|
-
|
|
373
|
-
```python
|
|
374
|
-
from kuaijs import g
|
|
375
|
-
Activity = g.importClass("android.app.Activity")
|
|
376
|
-
```
|
package/docs/apipython/image.md
CHANGED
|
@@ -382,18 +382,18 @@ def countColor(id: str, colors: str, threshold: float, x: int, y: int, ex: int,
|
|
|
382
382
|
|
|
383
383
|
**参数:**
|
|
384
384
|
|
|
385
|
-
| 参数名 | 类型 | 是否必填 | 默认值 | 描述
|
|
386
|
-
| ----------- | ----- | -------- | ------ |
|
|
387
|
-
| `id` | str | 是 | <br /> | 图片 ID,支持 `"screen"`、图片文件路径、HTTP 图片地址或已加载的图片 ID
|
|
385
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
386
|
+
| ----------- | ----- | -------- | ------ | --------------------------------------------------------------------------------- |
|
|
387
|
+
| `id` | str | 是 | <br /> | 图片 ID,支持 `"screen"`、图片文件路径、HTTP 图片地址或已加载的图片 ID |
|
|
388
388
|
| `colors` | str | 是 | <br /> | 颜色列表,支持 `主色-偏色\|主色-偏色` 格式,如 `#0A0A0A-#101010\|#FFFFFF-#101010` |
|
|
389
|
-
| `threshold` | float | 是 | <br /> | 颜色匹配阈值 (0.0-1.0),数值越大匹配越严格
|
|
390
|
-
| `x,y` | int | 是 | <br /> | 统计区域左上角坐标
|
|
391
|
-
| `ex,ey` | int | 是 | <br /> | 统计区域右下角坐标;传 `0` 表示延伸到图片右侧或底部边界
|
|
389
|
+
| `threshold` | float | 是 | <br /> | 颜色匹配阈值 (0.0-1.0),数值越大匹配越严格 |
|
|
390
|
+
| `x,y` | int | 是 | <br /> | 统计区域左上角坐标 |
|
|
391
|
+
| `ex,ey` | int | 是 | <br /> | 统计区域右下角坐标;传 `0` 表示延伸到图片右侧或底部边界 |
|
|
392
392
|
|
|
393
393
|
**返回值:**
|
|
394
394
|
|
|
395
|
-
| 类型 | 描述
|
|
396
|
-
| ----- |
|
|
395
|
+
| 类型 | 描述 |
|
|
396
|
+
| ----- | ---------------------------------------------------------------------------------- |
|
|
397
397
|
| `int` | 命中目标颜色的像素数量;图片加载失败、颜色为空、颜色格式无效或区域不合法时返回 `0` |
|
|
398
398
|
|
|
399
399
|
**示例:**
|
|
@@ -469,18 +469,18 @@ def findImage(id: str, templateImageId: str, x: int, y: int, ex: int, ey: int, t
|
|
|
469
469
|
|
|
470
470
|
**参数:**
|
|
471
471
|
|
|
472
|
-
| 参数名 | 类型 | 是否必填 | 默认值 | 描述
|
|
473
|
-
| ---------------------- | ------------ | -------- | --------------------------- |
|
|
474
|
-
| `imageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取)
|
|
475
|
-
| `templateImageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取)支持按\|分割,多个图片按顺序查找
|
|
476
|
-
| `x, y` | int | 是 | <br /> | 搜索区域左上角坐标
|
|
477
|
-
| `ex, ey` | int | 是 | <br /> | 搜索区域右下角坐标;传 `0` 表示延伸到图片右侧或底部边界
|
|
478
|
-
| `threshold` | float | 是 | <br /> | 匹配阈值 (0.0-1.0)。method `0`/`99` 建议 `0.5`–`0.6`;普通模板匹配(`1`/`3`/`5`)建议 `0.9`–`0.995`
|
|
479
|
-
| `limit` | int | 是 | <br /> | 最大查找数量,每个模板图片最多找 limit 个匹配结果
|
|
480
|
-
| `method` | int | 是 | <br /> | 匹配方法,见下方说明
|
|
481
|
-
| `rgb` | bool | 否 | `False` | 是否使用 RGB 找图,默认 `False` 会自动转灰度找图
|
|
482
|
-
| `options` | dict | 否 | `{}` | 额外选项。`scaleFactors` 仅 method=`99` 生效;`orz` 用于按方向取结果
|
|
483
|
-
| `options.scaleFactors` | list\[float] | 否 | `[1.0, 0.9, 1.1, 0.8, 1.2]` | 仅 method=`99` 生效。模板相对当前图的缩放比列表(**不是** `device.getScreenScale()`)。应按 baseScale 动态计算,见下方详解;默认值只适合尺寸接近时的盲扫
|
|
472
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
473
|
+
| ---------------------- | ------------ | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
474
|
+
| `imageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取) |
|
|
475
|
+
| `templateImageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取)支持按\|分割,多个图片按顺序查找 |
|
|
476
|
+
| `x, y` | int | 是 | <br /> | 搜索区域左上角坐标 |
|
|
477
|
+
| `ex, ey` | int | 是 | <br /> | 搜索区域右下角坐标;传 `0` 表示延伸到图片右侧或底部边界 |
|
|
478
|
+
| `threshold` | float | 是 | <br /> | 匹配阈值 (0.0-1.0)。method `0`/`99` 建议 `0.5`–`0.6`;普通模板匹配(`1`/`3`/`5`)建议 `0.9`–`0.995` |
|
|
479
|
+
| `limit` | int | 是 | <br /> | 最大查找数量,每个模板图片最多找 limit 个匹配结果 |
|
|
480
|
+
| `method` | int | 是 | <br /> | 匹配方法,见下方说明 |
|
|
481
|
+
| `rgb` | bool | 否 | `False` | 是否使用 RGB 找图,默认 `False` 会自动转灰度找图 |
|
|
482
|
+
| `options` | dict | 否 | `{}` | 额外选项。`scaleFactors` 仅 method=`99` 生效;`orz` 用于按方向取结果 |
|
|
483
|
+
| `options.scaleFactors` | list\[float] | 否 | `[1.0, 0.9, 1.1, 0.8, 1.2]` | 仅 method=`99` 生效。模板相对当前图的缩放比列表(**不是** `device.getScreenScale()`)。应按 baseScale 动态计算,见下方详解;默认值只适合尺寸接近时的盲扫 |
|
|
484
484
|
| `options.orz` | int | 否 | 不传 | 查找方向(1-8),与找色 `orz` 相同。不传或非 1-8 时仍按相似度从高到低返回。传入 1-8 时按该方向取前 `limit` 个达标结果;`limit=1` 时只返回该方向第一个,不会把其余命中都找出来。method `0`(SIFT)会先完成匹配再按方向排序截取 |
|
|
485
485
|
|
|
486
486
|
#### method 匹配方法说明
|
|
@@ -550,20 +550,19 @@ baseScale = 屏幕上目标高度(px) / 模板高度(px)
|
|
|
550
550
|
|
|
551
551
|
**数值例子:**
|
|
552
552
|
|
|
553
|
-
| 截模板设备 | 当前运行设备
|
|
554
|
-
| -------------- |
|
|
555
|
-
| iPhone 8 750px | 同机
|
|
556
|
-
| 750 宽 | 1170 宽
|
|
557
|
-
| 1170 宽 | 750 宽
|
|
558
|
-
|
|
|
559
|
-
| 模板按钮 120px | 屏上按钮 96px | 96 / 120 | `0.8` |
|
|
553
|
+
| 截模板设备 | 当前运行设备 | 计算 | baseScale |
|
|
554
|
+
| -------------- | ------------- | ---------- | --------- |
|
|
555
|
+
| iPhone 8 750px | 同机 | 750 / 750 | `1.0` |
|
|
556
|
+
| 750 宽 | 1170 宽 | 1170 / 750 | `1.56` |
|
|
557
|
+
| 1170 宽 | 750 宽 | 750 / 1170 | `0.641` |
|
|
558
|
+
| 模板按钮 120px | 屏上按钮 96px | 96 / 120 | `0.8` |
|
|
560
559
|
|
|
561
560
|
含义对照:
|
|
562
561
|
|
|
563
|
-
| baseScale | 含义
|
|
564
|
-
| --------- |
|
|
565
|
-
| `1.0` | 当前目标与模板同尺寸
|
|
566
|
-
| `0.64` | 当前目标大约是模板的 64%(高分屏模板跑低分)
|
|
562
|
+
| baseScale | 含义 | 引擎会对模板做什么 |
|
|
563
|
+
| --------- | --------------------------------------------- | ------------------ |
|
|
564
|
+
| `1.0` | 当前目标与模板同尺寸 | 不缩放 |
|
|
565
|
+
| `0.64` | 当前目标大约是模板的 64%(高分屏模板跑低分) | 缩到 64% 再匹配 |
|
|
567
566
|
| `1.56` | 当前目标大约是模板的 156%(低分屏模板跑高分) | 放大到 156% 再匹配 |
|
|
568
567
|
|
|
569
568
|
##### 2. 再围绕 baseScale 生成搜索列表
|
|
@@ -579,14 +578,14 @@ scaleFactors ≈ [ baseScale,
|
|
|
579
578
|
|
|
580
579
|
推荐参数:
|
|
581
580
|
|
|
582
|
-
| 项目 | 建议 | 原因
|
|
583
|
-
| -------------- | ---------------------------------- |
|
|
584
|
-
| 中心值 | 算出来的 `baseScale` | 最可能命中,必须放第一位
|
|
585
|
-
| 步进 `step` | `0.05`~`0.1` | 太疏容易跳过真实尺寸;太密浪费时间
|
|
586
|
-
| 半宽度 | `±0.1`~`±0.2`(约 ±10%~20%) | 覆盖状态栏/安全区/轻微布局差
|
|
587
|
-
| 总档数 | 3~7 个 | 每多一档就多跑一轮全图模板匹配
|
|
588
|
-
| 阈值 threshold | `0.5`~`0.6` 起调 | 缩放插值会降低相关分数,别用 0.9+
|
|
589
|
-
| 顺序 | **baseScale 最先**,再左右交替扩开 | 找满 limit 会提前结束
|
|
581
|
+
| 项目 | 建议 | 原因 |
|
|
582
|
+
| -------------- | ---------------------------------- | ---------------------------------- |
|
|
583
|
+
| 中心值 | 算出来的 `baseScale` | 最可能命中,必须放第一位 |
|
|
584
|
+
| 步进 `step` | `0.05`~`0.1` | 太疏容易跳过真实尺寸;太密浪费时间 |
|
|
585
|
+
| 半宽度 | `±0.1`~`±0.2`(约 ±10%~20%) | 覆盖状态栏/安全区/轻微布局差 |
|
|
586
|
+
| 总档数 | 3~7 个 | 每多一档就多跑一轮全图模板匹配 |
|
|
587
|
+
| 阈值 threshold | `0.5`~`0.6` 起调 | 缩放插值会降低相关分数,别用 0.9+ |
|
|
588
|
+
| 顺序 | **baseScale 最先**,再左右交替扩开 | 找满 limit 会提前结束 |
|
|
590
589
|
|
|
591
590
|
生成示例:
|
|
592
591
|
|
|
@@ -614,14 +613,14 @@ scale_factors = build_scale_factors(base_scale)
|
|
|
614
613
|
|
|
615
614
|
##### 3. 按场景怎么选
|
|
616
615
|
|
|
617
|
-
| 场景
|
|
618
|
-
|
|
|
619
|
-
| 模板就是本机截的,尺寸确定一致
|
|
620
|
-
| 已知截图机型与当前机型分辨率
|
|
621
|
-
| 多机型跑同一套模板,分辨率跨度大
|
|
622
|
-
| 完全不知道模板来源分辨率
|
|
623
|
-
| 只要微调(系统字体/显示缩放导致差几像素) | `[1.0, 0.95, 1.05, 0.9, 1.1]`
|
|
624
|
-
| 横竖屏切换 / 目标会旋转
|
|
616
|
+
| 场景 | 怎么设 `scaleFactors` | threshold |
|
|
617
|
+
| ----------------------------------------- | ----------------------------------------------------------------- | --------------- |
|
|
618
|
+
| 模板就是本机截的,尺寸确定一致 | 不必用 99,直接 method `5`;若坚持用 99 则 `[1.0]` | `0.9+` / `0.55` |
|
|
619
|
+
| 已知截图机型与当前机型分辨率 | 算 `baseScale`,再 `±0.05`~`±0.1` 扩 3~5 档 | `0.5`~`0.6` |
|
|
620
|
+
| 多机型跑同一套模板,分辨率跨度大 | 按每台设备运行时动态算 baseScale,不要写死默认那组 | `0.5`~`0.6` |
|
|
621
|
+
| 完全不知道模板来源分辨率 | 先用 method `0`(SIFT);或宽范围粗扫(慢,如 0.5~2.0 步进 0.1) | `0.5` 左右 |
|
|
622
|
+
| 只要微调(系统字体/显示缩放导致差几像素) | `[1.0, 0.95, 1.05, 0.9, 1.1]` | `0.55`~`0.65` |
|
|
623
|
+
| 横竖屏切换 / 目标会旋转 | method `99` **不够**,改用 method `0` SIFT | `0.5`~`0.6` |
|
|
625
624
|
|
|
626
625
|
默认值 `[1.0, 0.9, 1.1, 0.8, 1.2]` 的定位:
|
|
627
626
|
|
|
@@ -651,15 +650,15 @@ scale_factors = build_scale_factors(base_scale)
|
|
|
651
650
|
|
|
652
651
|
##### 5. 与 method `0`(SIFT)怎么选
|
|
653
652
|
|
|
654
|
-
| | method `99` 缩放匹配 | method `0` SIFT
|
|
655
|
-
| -------------- | ---------------------------------- |
|
|
656
|
-
| 尺寸变化 | 支持(靠你提供的比例穷举) | 支持(特征点,不靠固定比例)
|
|
657
|
-
| 你需要知道比例 | 最好先算 baseScale | 不需要
|
|
658
|
-
| 旋转 / 形变 | 基本不支持 | 较鲁棒
|
|
659
|
-
| 阈值建议 | `0.5`–`0.6` | `0.5`–`0.6`
|
|
660
|
-
| 透明 PNG 模板 | 支持(alpha 作权重 mask) | 支持(alpha 作特征掩码)
|
|
661
|
-
| 性能 | 与 factor 数量近似成正比,通常更快 | 特征提取重,通常更慢
|
|
662
|
-
| 推荐 | 比例可估算的跨分辨率找图 | 比例未知、或有旋转/透视时
|
|
653
|
+
| | method `99` 缩放匹配 | method `0` SIFT |
|
|
654
|
+
| -------------- | ---------------------------------- | ---------------------------- |
|
|
655
|
+
| 尺寸变化 | 支持(靠你提供的比例穷举) | 支持(特征点,不靠固定比例) |
|
|
656
|
+
| 你需要知道比例 | 最好先算 baseScale | 不需要 |
|
|
657
|
+
| 旋转 / 形变 | 基本不支持 | 较鲁棒 |
|
|
658
|
+
| 阈值建议 | `0.5`–`0.6` | `0.5`–`0.6` |
|
|
659
|
+
| 透明 PNG 模板 | 支持(alpha 作权重 mask) | 支持(alpha 作特征掩码) |
|
|
660
|
+
| 性能 | 与 factor 数量近似成正比,通常更快 | 特征提取重,通常更慢 |
|
|
661
|
+
| 推荐 | 比例可估算的跨分辨率找图 | 比例未知、或有旋转/透视时 |
|
|
663
662
|
|
|
664
663
|
**返回值:**
|
|
665
664
|
|
|
@@ -764,15 +763,15 @@ def findImageEx(id: str, kjstPath: str) -> List[Rect]
|
|
|
764
763
|
|
|
765
764
|
**参数:**
|
|
766
765
|
|
|
767
|
-
| 参数名
|
|
768
|
-
|
|
|
769
|
-
| `id`
|
|
770
|
-
| `kjstPath`
|
|
766
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
767
|
+
| ---------- | ---- | -------- | ------ | ------------------------------------------------------------------------------------- |
|
|
768
|
+
| `id` | str | 是 | <br /> | `"screen"`-当前屏幕截图,或图片 ID / 路径,语义与 `findImage` 相同 |
|
|
769
|
+
| `kjstPath` | str | 是 | <br /> | `res` 下的 kjst 文件名,例如 `"login.kjst"`。不要带 `res/` 前缀,也不要传手机绝对路径 |
|
|
771
770
|
|
|
772
771
|
**返回值:**
|
|
773
772
|
|
|
774
|
-
| 类型 | 描述
|
|
775
|
-
| ------------ |
|
|
773
|
+
| 类型 | 描述 |
|
|
774
|
+
| ------------ | -------------------------------------------------------------------------------------------- |
|
|
776
775
|
| `List[Rect]` | 命中矩形列表,字段与 `findImage` 相同。OCR 命中额外含 `text`。未找到或 kjst 无效时返回空列表 |
|
|
777
776
|
|
|
778
777
|
**说明:**
|
|
@@ -1164,44 +1163,3 @@ if img_id:
|
|
|
1164
1163
|
print(blur.shape)
|
|
1165
1164
|
image.release(img_id)
|
|
1166
1165
|
```
|
|
1167
|
-
|
|
1168
|
-
## 安卓独有方法
|
|
1169
|
-
|
|
1170
|
-
### getBitmap - 获取安卓的Bitmap对象
|
|
1171
|
-
|
|
1172
|
-
此方法仅在安卓可用,用于获取图片的 Bitmap 对象。
|
|
1173
|
-
|
|
1174
|
-
```python
|
|
1175
|
-
def getBitmap(imageId: str) -> any:
|
|
1176
|
-
```
|
|
1177
|
-
|
|
1178
|
-
**参数:**
|
|
1179
|
-
|
|
1180
|
-
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
1181
|
-
| --------- | ------ | -------- | ------ | --------- |
|
|
1182
|
-
| `imageId` | string | 是 | - | 原图片 ID |
|
|
1183
|
-
|
|
1184
|
-
**返回值:**
|
|
1185
|
-
|
|
1186
|
-
| 类型 | 描述 |
|
|
1187
|
-
| ----- | ---------------- |
|
|
1188
|
-
| `any` | 安卓的Bitmap对象 |
|
|
1189
|
-
|
|
1190
|
-
**示例:**
|
|
1191
|
-
|
|
1192
|
-
```python
|
|
1193
|
-
from kuaijs import image
|
|
1194
|
-
|
|
1195
|
-
imageId = image.captureScreen()
|
|
1196
|
-
if imageId:
|
|
1197
|
-
bitmap = image.getBitmap(imageId)
|
|
1198
|
-
print(f"Bitmap 对象: {bitmap}")
|
|
1199
|
-
# 注意:使用完 Bitmap 后,需要调用 recycle() 方法释放内存
|
|
1200
|
-
bitmap.recycle()
|
|
1201
|
-
image.release(imageId)
|
|
1202
|
-
|
|
1203
|
-
# 快捷获取截屏bitmap
|
|
1204
|
-
bitmap = image.getBitmap("screen");
|
|
1205
|
-
print(f"Bitmap 对象: {bitmap}")
|
|
1206
|
-
bitmap.recycle();
|
|
1207
|
-
```
|
package/docs/apipython/ui.md
CHANGED
|
@@ -82,9 +82,9 @@ def onEvent(callback: Callable[[str, Any], None] | None) -> None
|
|
|
82
82
|
|
|
83
83
|
**参数:**
|
|
84
84
|
|
|
85
|
-
| 参数名 | 类型
|
|
86
|
-
| ---------- |
|
|
87
|
-
| `callback` | `Callable[[str, Any], None]` 或 `None` | 是
|
|
85
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
86
|
+
| ---------- | -------------------------------------- | -------- | ------ | -------------------------------------------------------- |
|
|
87
|
+
| `callback` | `Callable[[str, Any], None]` 或 `None` | 是 | | 事件回调函数,用于处理来自网页的事件,传 `None` 取消监听 |
|
|
88
88
|
|
|
89
89
|
**示例:**
|
|
90
90
|
|
|
@@ -268,7 +268,7 @@ ui.alert("操作完成", "脚本执行完成,共处理了100个项目")
|
|
|
268
268
|
```typescript
|
|
269
269
|
declare function registerUIFunc(
|
|
270
270
|
name: string,
|
|
271
|
-
func: (data: Record<string, any>) => void
|
|
271
|
+
func: (data: Record<string, any>) => void,
|
|
272
272
|
): void;
|
|
273
273
|
```
|
|
274
274
|
|
|
@@ -294,9 +294,8 @@ declare function registerUIFunc(
|
|
|
294
294
|
<script>
|
|
295
295
|
// 注册供主进程调用的函数
|
|
296
296
|
ms.registerUIFunc("updateStatus", function (data) {
|
|
297
|
-
document.getElementById(
|
|
298
|
-
|
|
299
|
-
).textContent = `状态: ${data.status}, 进度: ${data.progress}%`;
|
|
297
|
+
document.getElementById("status").textContent =
|
|
298
|
+
`状态: ${data.status}, 进度: ${data.progress}%`;
|
|
300
299
|
});
|
|
301
300
|
|
|
302
301
|
ms.registerUIFunc("loadData", function (data) {
|
|
@@ -669,35 +668,6 @@ ms.getDeviceID()
|
|
|
669
668
|
});
|
|
670
669
|
```
|
|
671
670
|
|
|
672
|
-
#### getServerDeviceId - 获取服务器设备 ID
|
|
673
|
-
|
|
674
|
-
```typescript
|
|
675
|
-
declare function getServerDeviceId(): Promise<string>;
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
**返回值:**
|
|
679
|
-
|
|
680
|
-
| 类型 | 描述 |
|
|
681
|
-
| ----------------- | ------------- |
|
|
682
|
-
| `Promise<string>` | 服务器设备 ID |
|
|
683
|
-
|
|
684
|
-
**说明:**
|
|
685
|
-
|
|
686
|
-
获取当前运行脚本的服务器设备 ID。
|
|
687
|
-
|
|
688
|
-
**网页端示例:**
|
|
689
|
-
|
|
690
|
-
```javascript
|
|
691
|
-
// 获取服务器设备ID
|
|
692
|
-
ms.getServerDeviceId()
|
|
693
|
-
.then((deviceId) => {
|
|
694
|
-
console.log("当前服务器设备ID:", deviceId);
|
|
695
|
-
})
|
|
696
|
-
.catch((error) => {
|
|
697
|
-
console.error("获取服务器设备ID出错:", error);
|
|
698
|
-
});
|
|
699
|
-
```
|
|
700
|
-
|
|
701
671
|
#### openURL - 调用浏览器打开 URL
|
|
702
672
|
|
|
703
673
|
```typescript
|