rust-rpa 0.2.6 → 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.
Files changed (3) hide show
  1. package/README.md +16 -1
  2. package/index.d.ts +33 -8
  3. 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()` / `changeOptions()`);启动时先建基线**不**调回调,仅在检测到相对上一帧的变化时调用 `callback(changeRatio)`(约 0–1;两帧缓冲区长度不一致时为 `1`);`regions` 可指定多个逻辑像素监控区域
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,6 +591,21 @@ if (targetWindow) {
591
591
 
592
592
  ## 更新日志
593
593
 
594
+ ### 0.2.7
595
+
596
+ #### 新功能
597
+
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
+
594
609
  ### 0.2.6
595
610
 
596
611
  #### 行为调整
package/index.d.ts CHANGED
@@ -258,16 +258,41 @@ export interface WindowWatchOptionsJs {
258
258
  * - 大于 0.0 时,仅当像素变化比例超过阈值才触发回调
259
259
  */
260
260
  threshold?: number
261
+ /**
262
+ * 最小变化像素数(逻辑像素),默认 0(不使用)
263
+ *
264
+ * - 0 表示不使用此条件,仅靠 threshold 控制
265
+ * - 大于 0 时,估算的原图逻辑像素变化数须 >= 该值才触发回调
266
+ * - 与 threshold 为 AND 关系:两者均满足时才触发
267
+ */
268
+ minChangedPixels?: number
269
+ /**
270
+ * 单像素最小通道差异(0-255),默认 30,用于过滤截图噪声
271
+ *
272
+ * - 仅当像素的 R/G/B 任一通道差值 >= 该值才算“变化”
273
+ * - 设为 0 则任意微小差异都计入(最敏感,但噪声也会触发)
274
+ * - 设为 1 则任意像素差异都计入(精确字节比较)
275
+ */
276
+ minPixelDiff?: number
261
277
  /** 图片来源:'window'(默认)或 'screen' */
262
278
  from?: 'window' | 'screen'
263
279
  /** 仅在指定多个区域检测变化(逻辑像素,相对窗口);不填或空数组表示全窗口 */
264
280
  regions?: Array<CaptureRegion> | null
265
281
  }
282
+ /**
283
+ * 窗口内容变化回调信息
284
+ */
285
+ export interface WindowChangeInfo {
286
+ /** 降采样相邻帧对比得到的像素变化比例,约 0.0–1.0;帧尺寸不一致时为 `1` */
287
+ changeRatio: number
288
+ /** 估算的原图逻辑像素变化数;帧尺寸不一致时为 `4294967295` (u32::MAX) */
289
+ changedPixels: number
290
+ }
266
291
  /**
267
292
  * 窗口内容变化回调(启动时先采一帧建基线,不调用本回调;之后仅在检测到相对上一帧的变化时调用)
268
- * @param changeRatio 降采样相邻帧对比得到的像素变化比例,约 0.0–1.0;帧尺寸不一致时为 `1`
293
+ * @param info 变化详情,含 `changeRatio`(变化比例)和 `changedPixels`(估算变化像素数)
269
294
  */
270
- export type WindowChangeCallback = (changeRatio: number) => void
295
+ export type WindowChangeCallback = (info: WindowChangeInfo) => void
271
296
  /** 窗口变化监听器句柄,用于停止监听 */
272
297
  export interface WindowWatcher {
273
298
  /** 停止监听,释放底层资源 */
@@ -1306,8 +1331,8 @@ export declare class Window {
1306
1331
  * // 场景 1:监听窗口变化
1307
1332
  * const watcher = targetWindow.watchChanges(
1308
1333
  * { threshold: 0.02, from: 'window' },
1309
- * (changeRatio) => {
1310
- * console.log('窗口内容发生了变化', changeRatio);
1334
+ * (info) => {
1335
+ * console.log('窗口内容发生了变化', info.changeRatio, info.changedPixels);
1311
1336
  * }
1312
1337
  * );
1313
1338
  * ```
@@ -1322,8 +1347,8 @@ export declare class Window {
1322
1347
  * { x: 0, y: 0, width: 200, height: 80 },
1323
1348
  * ],
1324
1349
  * },
1325
- * (changeRatio) => {
1326
- * console.log('指定区域内容发生了变化', changeRatio);
1350
+ * (info) => {
1351
+ * console.log('指定区域内容发生了变化', info.changeRatio, info.changedPixels);
1327
1352
  * }
1328
1353
  * );
1329
1354
  * ```
@@ -1333,8 +1358,8 @@ export declare class Window {
1333
1358
  * // 场景 3:提高阈值减少微小变化触发
1334
1359
  * const watcher = targetWindow.watchChanges(
1335
1360
  * { threshold: 0.02 },
1336
- * (changeRatio) => {
1337
- * console.log('窗口内容发生持久变化', changeRatio);
1361
+ * (info) => {
1362
+ * console.log('窗口内容发生持久变化', info.changeRatio);
1338
1363
  * }
1339
1364
  * );
1340
1365
  * watcher.changeOptions({ threshold: 0.05 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rust-rpa",
3
- "version": "0.2.6",
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.6",
71
- "@alibot/rust-rpa-win32-ia32-msvc": "0.2.6",
72
- "@alibot/rust-rpa-darwin-x64": "0.2.6",
73
- "@alibot/rust-rpa-darwin-arm64": "0.2.6"
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
  }