rust-rpa 0.2.6-beta.2 → 0.2.7
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/README.md +25 -9
- package/index.d.ts +53 -38
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -205,7 +205,7 @@ main();
|
|
|
205
205
|
- `setBounds(bounds)` - 设置窗口边界
|
|
206
206
|
- `toJSON()` - 转为 JSON 对象
|
|
207
207
|
- `captureImage(options?)` - 截图
|
|
208
|
-
- `watchChanges(options?, callback)` - 监听窗口内容变化;返回 `WindowWatcher`(`stop()` / `isRunning()
|
|
208
|
+
- `watchChanges(options?, callback)` - 监听窗口内容变化;返回 `WindowWatcher`(`stop()` / `isRunning()` / `changeOptions()`);启动时先建基线**不**调回调,仅在检测到相对上一帧的变化时调用 `callback(info)`(`info` 含 `changeRatio` 变化比例和 `changedPixels` 估算变化像素数);`regions` 可指定多个逻辑像素监控区域;`minChangedPixels` 可按原图逻辑像素数控制触发门槛;`minPixelDiff` 可设置单像素最小通道差异(默认 30)过滤截图噪声
|
|
209
209
|
- `recognizeText(options?)` - OCR 识别文字
|
|
210
210
|
- `findText(text, options?)` - 查找文字
|
|
211
211
|
- `findIcon(template, options?)` - 查找图标
|
|
@@ -591,16 +591,32 @@ if (targetWindow) {
|
|
|
591
591
|
|
|
592
592
|
## 更新日志
|
|
593
593
|
|
|
594
|
-
### 0.2.
|
|
594
|
+
### 0.2.7
|
|
595
595
|
|
|
596
596
|
#### 新功能
|
|
597
597
|
|
|
598
|
-
- **Window.watchChanges 新增 `
|
|
599
|
-
- `
|
|
600
|
-
- `
|
|
601
|
-
-
|
|
602
|
-
|
|
603
|
-
-
|
|
598
|
+
- **Window.watchChanges 新增 `minChangedPixels` 参数**: 支持按原图逻辑像素数控制变化触发,与 `threshold` 为 AND 关系
|
|
599
|
+
- `minChangedPixels: 0`(默认)- 不使用此条件,仅靠 `threshold` 控制
|
|
600
|
+
- `minChangedPixels > 0` - 估算的原图逻辑像素变化数须 >= 该值才触发回调
|
|
601
|
+
- 示例:`{ threshold: 0.001, minChangedPixels: 500 }` 表示变化比例超过 0.1% **且** 至少 500 个逻辑像素变化才触发
|
|
602
|
+
- **Window.watchChanges 新增 `minPixelDiff` 参数**: 单像素最小通道差异(0-255),默认 30,用于过滤截图捕获噪声
|
|
603
|
+
- `minPixelDiff: 30`(默认)- R/G/B 任一通道差值 ≥ 30 才算“变化”,有效过滤截图噪声(通常差值 1-10)
|
|
604
|
+
- `minPixelDiff: 0` - 任意微小差异都计入(最敏感,但噪声也会触发)
|
|
605
|
+
- `minPixelDiff: 1` - 任意像素差异都计入(精确字节比较)
|
|
606
|
+
- 示例:`{ threshold: 0, minChangedPixels: 2, minPixelDiff: 30 }` 过滤噪声同时保持对光标闪烁等微小变化的灵敏度
|
|
607
|
+
- **Window.watchChanges 回调参数改为对象**: `callback(info)`,`info` 为 `{ changeRatio, changedPixels }`,其中 `changeRatio` 为相邻两帧像素变化比例(约 0.0–1.0),`changedPixels` 为估算的原图逻辑像素变化数;**启动首帧不触发回调**(仅建基线);两帧缓冲区长度不一致时 `changeRatio` 为 `1`、`changedPixels` 为 `4294967295`。
|
|
608
|
+
|
|
609
|
+
### 0.2.6
|
|
610
|
+
|
|
611
|
+
#### 行为调整
|
|
612
|
+
|
|
613
|
+
- **Window.watchChanges 启动**:首帧仅建立对比基线,**不**调用 `callback`;仅在后续轮询检测到相对上一帧的变化时才触发回调。
|
|
614
|
+
|
|
615
|
+
#### 破坏性变更
|
|
616
|
+
|
|
617
|
+
- **Window.watchChanges 选项**: `region` 已改为 `regions`(`CaptureRegion` 数组),可指定多个监控区域;
|
|
618
|
+
- **`WindowWatcher.changeOptions(options)`**: 可按字段合并更新当前监听参数(仅传入字段覆盖,未传字段保持原值),下一轮轮询起生效;若已 `stop()` 再调用会报错。
|
|
619
|
+
- **`Window.watchChanges` 回调参数**: `callback(changeRatio)`,`changeRatio` 为相邻两帧在降采样图上的像素变化比例(约 0.0–1.0);**启动首帧不触发回调**(仅建基线);两帧缓冲区长度不一致时为 `1`。
|
|
604
620
|
|
|
605
621
|
### 0.2.5
|
|
606
622
|
|
|
@@ -636,7 +652,7 @@ if (targetWindow) {
|
|
|
636
652
|
|
|
637
653
|
#### 新功能
|
|
638
654
|
|
|
639
|
-
- **Window.watchChanges(窗口内容变化监听)**:
|
|
655
|
+
- **Window.watchChanges(窗口内容变化监听)**: 后台线程降采样对比相邻帧,超过阈值才触发回调;支持 `threshold`、`from`(`window`/`screen`)、`regions`(多区域,逻辑像素);返回 `WindowWatcher`,可 `stop()`、`changeOptions()` 运行时改参。
|
|
640
656
|
|
|
641
657
|
### 0.2.3
|
|
642
658
|
|
package/index.d.ts
CHANGED
|
@@ -249,13 +249,6 @@ export interface CaptureImageOptions {
|
|
|
249
249
|
*/
|
|
250
250
|
writeFilePath?: string | null
|
|
251
251
|
}
|
|
252
|
-
/** 截图目标尺寸(用于窗口变化监听) */
|
|
253
|
-
export interface CaptureSizeJs {
|
|
254
|
-
/** 目标宽度(像素) */
|
|
255
|
-
width: number
|
|
256
|
-
/** 目标高度(像素) */
|
|
257
|
-
height: number
|
|
258
|
-
}
|
|
259
252
|
/** 窗口变化监听的选项 */
|
|
260
253
|
export interface WindowWatchOptionsJs {
|
|
261
254
|
/**
|
|
@@ -265,34 +258,52 @@ export interface WindowWatchOptionsJs {
|
|
|
265
258
|
* - 大于 0.0 时,仅当像素变化比例超过阈值才触发回调
|
|
266
259
|
*/
|
|
267
260
|
threshold?: number
|
|
268
|
-
/** 图片来源:'window'(默认)或 'screen' */
|
|
269
|
-
from?: 'window' | 'screen'
|
|
270
|
-
/** 仅在指定区域检测变化(逻辑像素) */
|
|
271
|
-
region?: CaptureRegion | null
|
|
272
|
-
/** 检测到变化后传递给回调的截图目标尺寸 */
|
|
273
|
-
captureSize?: CaptureSizeJs | null
|
|
274
261
|
/**
|
|
275
|
-
*
|
|
262
|
+
* 最小变化像素数(逻辑像素),默认 0(不使用)
|
|
276
263
|
*
|
|
277
|
-
* - 0
|
|
278
|
-
* - 大于 0
|
|
264
|
+
* - 0 表示不使用此条件,仅靠 threshold 控制
|
|
265
|
+
* - 大于 0 时,估算的原图逻辑像素变化数须 >= 该值才触发回调
|
|
266
|
+
* - 与 threshold 为 AND 关系:两者均满足时才触发
|
|
267
|
+
*/
|
|
268
|
+
minChangedPixels?: number
|
|
269
|
+
/**
|
|
270
|
+
* 单像素最小通道差异(0-255),默认 30,用于过滤截图噪声
|
|
279
271
|
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
* 连续 N 帧均有变化,通过确认。
|
|
284
|
-
* 推荐 stableFrames=2 可过滤大多数光标闪烁。
|
|
272
|
+
* - 仅当像素的 R/G/B 任一通道差值 >= 该值才算“变化”
|
|
273
|
+
* - 设为 0 则任意微小差异都计入(最敏感,但噪声也会触发)
|
|
274
|
+
* - 设为 1 则任意像素差异都计入(精确字节比较)
|
|
285
275
|
*/
|
|
286
|
-
|
|
276
|
+
minPixelDiff?: number
|
|
277
|
+
/** 图片来源:'window'(默认)或 'screen' */
|
|
278
|
+
from?: 'window' | 'screen'
|
|
279
|
+
/** 仅在指定多个区域检测变化(逻辑像素,相对窗口);不填或空数组表示全窗口 */
|
|
280
|
+
regions?: Array<CaptureRegion> | null
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* 窗口内容变化回调信息
|
|
284
|
+
*/
|
|
285
|
+
export interface WindowChangeInfo {
|
|
286
|
+
/** 降采样相邻帧对比得到的像素变化比例,约 0.0–1.0;帧尺寸不一致时为 `1` */
|
|
287
|
+
changeRatio: number
|
|
288
|
+
/** 估算的原图逻辑像素变化数;帧尺寸不一致时为 `4294967295` (u32::MAX) */
|
|
289
|
+
changedPixels: number
|
|
287
290
|
}
|
|
288
|
-
/**
|
|
289
|
-
|
|
291
|
+
/**
|
|
292
|
+
* 窗口内容变化回调(启动时先采一帧建基线,不调用本回调;之后仅在检测到相对上一帧的变化时调用)
|
|
293
|
+
* @param info 变化详情,含 `changeRatio`(变化比例)和 `changedPixels`(估算变化像素数)
|
|
294
|
+
*/
|
|
295
|
+
export type WindowChangeCallback = (info: WindowChangeInfo) => void
|
|
290
296
|
/** 窗口变化监听器句柄,用于停止监听 */
|
|
291
297
|
export interface WindowWatcher {
|
|
292
298
|
/** 停止监听,释放底层资源 */
|
|
293
299
|
stop(): void
|
|
294
300
|
/** 检查是否仍在运行 */
|
|
295
301
|
isRunning(): boolean
|
|
302
|
+
/**
|
|
303
|
+
* 在监听过程中合并更新选项(仅传入的字段会覆盖当前值,未传的字段保持不变);
|
|
304
|
+
* 下一轮轮询起生效;若已调用 stop() 则抛出错误。
|
|
305
|
+
*/
|
|
306
|
+
changeOptions(options: WindowWatchOptionsJs): void
|
|
296
307
|
}
|
|
297
308
|
/** 窗口尺寸信息 */
|
|
298
309
|
export interface WindowSize {
|
|
@@ -1308,11 +1319,11 @@ export declare class Window {
|
|
|
1308
1319
|
/**
|
|
1309
1320
|
* 监听窗口内容变化,当检测到变化时触发回调函数
|
|
1310
1321
|
*
|
|
1311
|
-
*
|
|
1312
|
-
*
|
|
1322
|
+
* 底层使用降采样差异检测;启动后首帧仅建立对比基线、**不**调用 callback,
|
|
1323
|
+
* 之后仅在相对上一帧检测到变化时才触发回调,资源开销远低于定时轮询截图。
|
|
1313
1324
|
*
|
|
1314
1325
|
* @param options 监听选项(可选)
|
|
1315
|
-
* @param callback
|
|
1326
|
+
* @param callback 检测到相对上一帧有变化时的回调;参数 `changeRatio` 为降采样帧上估算的像素变化比例(约 0–1)
|
|
1316
1327
|
* @returns WindowWatcher 句柄,调用 stop() 可停止监听
|
|
1317
1328
|
*
|
|
1318
1329
|
* @example
|
|
@@ -1320,34 +1331,38 @@ export declare class Window {
|
|
|
1320
1331
|
* // 场景 1:监听窗口变化
|
|
1321
1332
|
* const watcher = targetWindow.watchChanges(
|
|
1322
1333
|
* { threshold: 0.02, from: 'window' },
|
|
1323
|
-
* () => {
|
|
1324
|
-
* console.log('窗口内容发生了变化');
|
|
1334
|
+
* (info) => {
|
|
1335
|
+
* console.log('窗口内容发生了变化', info.changeRatio, info.changedPixels);
|
|
1325
1336
|
* }
|
|
1326
1337
|
* );
|
|
1327
1338
|
* ```
|
|
1328
1339
|
*
|
|
1329
1340
|
* @example
|
|
1330
1341
|
* ```javascript
|
|
1331
|
-
* // 场景 2
|
|
1342
|
+
* // 场景 2:仅监听窗口内多个区域
|
|
1332
1343
|
* const watcher = targetWindow.watchChanges(
|
|
1333
|
-
* {
|
|
1334
|
-
*
|
|
1344
|
+
* {
|
|
1345
|
+
* regions: [
|
|
1346
|
+
* { x: 100, y: 200, width: 400, height: 300 },
|
|
1347
|
+
* { x: 0, y: 0, width: 200, height: 80 },
|
|
1348
|
+
* ],
|
|
1335
1349
|
* },
|
|
1336
|
-
* () => {
|
|
1337
|
-
* console.log('指定区域内容发生了变化');
|
|
1350
|
+
* (info) => {
|
|
1351
|
+
* console.log('指定区域内容发生了变化', info.changeRatio, info.changedPixels);
|
|
1338
1352
|
* }
|
|
1339
1353
|
* );
|
|
1340
1354
|
* ```
|
|
1341
1355
|
*
|
|
1342
1356
|
* @example
|
|
1343
1357
|
* ```javascript
|
|
1344
|
-
* // 场景 3
|
|
1358
|
+
* // 场景 3:提高阈值减少微小变化触发
|
|
1345
1359
|
* const watcher = targetWindow.watchChanges(
|
|
1346
|
-
* { threshold: 0.02
|
|
1347
|
-
* () => {
|
|
1348
|
-
* console.log('窗口内容发生持久变化');
|
|
1360
|
+
* { threshold: 0.02 },
|
|
1361
|
+
* (info) => {
|
|
1362
|
+
* console.log('窗口内容发生持久变化', info.changeRatio);
|
|
1349
1363
|
* }
|
|
1350
1364
|
* );
|
|
1365
|
+
* watcher.changeOptions({ threshold: 0.05 });
|
|
1351
1366
|
* ```
|
|
1352
1367
|
*/
|
|
1353
1368
|
watchChanges(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rust-rpa",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Rust-based RPA automation library for Node.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "index.js",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"commander": "^14.0.3"
|
|
68
68
|
},
|
|
69
69
|
"optionalDependencies": {
|
|
70
|
-
"@alibot/rust-rpa-win32-x64-msvc": "0.2.
|
|
71
|
-
"@alibot/rust-rpa-win32-ia32-msvc": "0.2.
|
|
72
|
-
"@alibot/rust-rpa-darwin-x64": "0.2.
|
|
73
|
-
"@alibot/rust-rpa-darwin-arm64": "0.2.
|
|
70
|
+
"@alibot/rust-rpa-win32-x64-msvc": "0.2.7",
|
|
71
|
+
"@alibot/rust-rpa-win32-ia32-msvc": "0.2.7",
|
|
72
|
+
"@alibot/rust-rpa-darwin-x64": "0.2.7",
|
|
73
|
+
"@alibot/rust-rpa-darwin-arm64": "0.2.7"
|
|
74
74
|
}
|
|
75
75
|
}
|