ms-vite-plugin 1.1.1 → 1.1.3
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/build.js +6 -0
- package/dist/cli.js +98 -8
- package/dist/mcp/device-config.d.ts +55 -0
- package/dist/mcp/device-config.js +183 -0
- package/dist/mcp/docs-service.d.ts +65 -0
- package/dist/mcp/docs-service.js +168 -0
- package/dist/mcp/project.d.ts +16 -0
- package/dist/mcp/project.js +74 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.js +825 -0
- package/dist/mcp/types.d.ts +32 -0
- package/dist/mcp/types.js +11 -0
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.js +86 -0
- package/dist/project.d.ts +89 -0
- package/dist/project.js +306 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +63 -0
- package/docs/api/action.md +922 -0
- package/docs/api/appleocr.md +229 -0
- package/docs/api/config.md +122 -0
- package/docs/api/cryptoUtils.md +232 -0
- package/docs/api/device.md +374 -0
- package/docs/api/file.md +516 -0
- package/docs/api/global.md +617 -0
- package/docs/api/hid.md +1032 -0
- package/docs/api/hotUpdate.md +166 -0
- package/docs/api/http.md +548 -0
- package/docs/api/image.md +907 -0
- package/docs/api/ime.md +290 -0
- package/docs/api/logger.md +324 -0
- package/docs/api/media.md +248 -0
- package/docs/api/mysql.md +441 -0
- package/docs/api/netCard.md +200 -0
- package/docs/api/node.md +353 -0
- package/docs/api/paddleocr.md +246 -0
- package/docs/api/pip.md +242 -0
- package/docs/api/system.md +572 -0
- package/docs/api/thread.md +269 -0
- package/docs/api/tomatoocr.md +425 -0
- package/docs/api/tts.md +334 -0
- package/docs/api/ui.md +947 -0
- package/docs/api/utils.md +265 -0
- package/docs/api/yolo.md +310 -0
- package/docs/apicn/action.md +919 -0
- package/docs/apicn/appleocr.md +233 -0
- package/docs/apicn/config.md +120 -0
- package/docs/apicn/device.md +385 -0
- package/docs/apicn/file.md +511 -0
- package/docs/apicn/global.md +613 -0
- package/docs/apicn/hid.md +1033 -0
- package/docs/apicn/hotUpdate.md +170 -0
- package/docs/apicn/http.md +672 -0
- package/docs/apicn/image.md +924 -0
- package/docs/apicn/ime.md +290 -0
- package/docs/apicn/logger.md +332 -0
- package/docs/apicn/media.md +252 -0
- package/docs/apicn/mysql.md +445 -0
- package/docs/apicn/netCard.md +200 -0
- package/docs/apicn/node.md +362 -0
- package/docs/apicn/paddleocr.md +255 -0
- package/docs/apicn/pip.md +242 -0
- package/docs/apicn/system.md +575 -0
- package/docs/apicn/thread.md +269 -0
- package/docs/apicn/tts.md +338 -0
- package/docs/apicn/ui.md +933 -0
- package/docs/apicn/utils.md +265 -0
- package/docs/apicn/yolo.md +314 -0
- package/docs/apipython/action.md +901 -0
- package/docs/apipython/appleocr.md +226 -0
- package/docs/apipython/config.md +126 -0
- package/docs/apipython/cryptoUtils.md +246 -0
- package/docs/apipython/device.md +365 -0
- package/docs/apipython/file.md +476 -0
- package/docs/apipython/g.md +154 -0
- package/docs/apipython/hid.md +1059 -0
- package/docs/apipython/hotUpdate.md +154 -0
- package/docs/apipython/image.md +938 -0
- package/docs/apipython/ime.md +306 -0
- package/docs/apipython/logger.md +330 -0
- package/docs/apipython/media.md +221 -0
- package/docs/apipython/mysql.md +432 -0
- package/docs/apipython/netCard.md +219 -0
- package/docs/apipython/node.md +331 -0
- package/docs/apipython/overview.md +66 -0
- package/docs/apipython/paddleocr.md +211 -0
- package/docs/apipython/pip.md +231 -0
- package/docs/apipython/system.md +458 -0
- package/docs/apipython/tomatoocr.md +444 -0
- package/docs/apipython/tts.md +331 -0
- package/docs/apipython/ui.md +949 -0
- package/docs/apipython/utils.md +284 -0
- package/docs/apipython/yolo.md +281 -0
- package/package.json +8 -4
|
@@ -0,0 +1,924 @@
|
|
|
1
|
+
# 图片模块 ($图片)
|
|
2
|
+
|
|
3
|
+
图片模块提供了强大的图像处理功能,包括截图、图像识别、模板匹配、颜色查找、图像变换等。
|
|
4
|
+
|
|
5
|
+
注意所有的 `图片ID` 都需要在使用后释放,否则会导致内存泄漏。
|
|
6
|
+
|
|
7
|
+
所有传递`图片ID`的函数都可以使用`"screen"`作为参数,来表示对当前屏幕进行操作。
|
|
8
|
+
|
|
9
|
+
`"screen"` 在设置为`Agent`模式,使用`快点Agent`截图,录屏模式使用录屏截图。
|
|
10
|
+
|
|
11
|
+
所有传递`图片ID`的函数都可以使用`"shortcut"`作为参数,来表示指定 HID 快捷指令截图
|
|
12
|
+
|
|
13
|
+
所有传递`图片ID`的函数都可以使用`"actionScreenshot"`作为参数,来表示指定 HID 快捷键系统截图
|
|
14
|
+
|
|
15
|
+
所有传递`图片ID`的函数都可以使用图片路径作为参数,来表示对指定图片进行操作,支持 res 目录文件,和手机文件路径。
|
|
16
|
+
|
|
17
|
+
## 图片获取与管理
|
|
18
|
+
|
|
19
|
+
### 截取屏幕
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
function 截取屏幕(
|
|
23
|
+
区域左上角X坐标?: 数字,
|
|
24
|
+
区域左上角Y坐标?: 数字,
|
|
25
|
+
区域右下角X坐标?: 数字,
|
|
26
|
+
区域右下角Y坐标?: 数字,
|
|
27
|
+
): 字符串 | null;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**参数:**
|
|
31
|
+
|
|
32
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
33
|
+
| ----------------- | ---- | -------- | ------ | ----------------- |
|
|
34
|
+
| `区域左上角X坐标` | 数字 | 否 | 0 | 区域左上角 X 坐标 |
|
|
35
|
+
| `区域左上角Y坐标` | 数字 | 否 | 0 | 区域左上角 Y 坐标 |
|
|
36
|
+
| `区域右下角X坐标` | 数字 | 否 | 0 | 区域右下角 X 坐标 |
|
|
37
|
+
| `区域右下角Y坐标` | 数字 | 否 | 0 | 区域右下角 Y 坐标 |
|
|
38
|
+
|
|
39
|
+
**返回值:**
|
|
40
|
+
|
|
41
|
+
| 类型 | 描述 |
|
|
42
|
+
| -------- | -------------------------------- |
|
|
43
|
+
| `字符串` | 截图的图片 ID,失败时返回 `null` |
|
|
44
|
+
|
|
45
|
+
**示例:**
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
// 截取全屏
|
|
49
|
+
const 图片ID = $图片.截取屏幕();
|
|
50
|
+
// 获取手机文档目录
|
|
51
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
52
|
+
if (图片ID) {
|
|
53
|
+
$打印信息日志("截图成功");
|
|
54
|
+
$图片.保存图片(图片ID, `${文档目录}/screenshot.jpg`);
|
|
55
|
+
$图片.释放图片(图片ID); // 记得释放内存
|
|
56
|
+
} else {
|
|
57
|
+
$打印错误日志("截图失败");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// 截取指定区域
|
|
61
|
+
const 图片ID = $图片.截取屏幕(100, 100, 200, 200);
|
|
62
|
+
// 获取手机文档目录
|
|
63
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
64
|
+
if (图片ID) {
|
|
65
|
+
$打印信息日志("截图成功");
|
|
66
|
+
$图片.保存图片(图片ID, `${文档目录}/screenshot.jpg`);
|
|
67
|
+
$图片.释放图片(图片ID); // 记得释放内存
|
|
68
|
+
} else {
|
|
69
|
+
$打印错误日志("截图失败");
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 截取全屏 - 截取设备全屏。
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
function 截取全屏(): 字符串 | null;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**返回值:**
|
|
80
|
+
|
|
81
|
+
| 类型 | 描述 |
|
|
82
|
+
| -------- | -------------------------------- |
|
|
83
|
+
| `字符串` | 截图的图片 ID,失败时返回 `null` |
|
|
84
|
+
|
|
85
|
+
**示例:**
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
const 图片ID = $图片.截取全屏();
|
|
89
|
+
// 获取手机文档目录
|
|
90
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
91
|
+
if (图片ID) {
|
|
92
|
+
$打印信息日志("截图成功");
|
|
93
|
+
$图片.保存图片(图片ID, `${文档目录}/screenshot.jpg`);
|
|
94
|
+
$图片.释放图片(图片ID); // 记得释放内存
|
|
95
|
+
} else {
|
|
96
|
+
$打印错误日志("截图失败");
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 截取区域 - 截取设备指定区域。
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
function 截取区域(
|
|
104
|
+
区域左上角X坐标: 数字,
|
|
105
|
+
区域左上角Y坐标: 数字,
|
|
106
|
+
区域右下角X坐标: 数字,
|
|
107
|
+
区域右下角Y坐标: 数字,
|
|
108
|
+
): 字符串 | null;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**参数:**
|
|
112
|
+
|
|
113
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
114
|
+
| ----------------- | ---- | -------- | ------ | ----------------- |
|
|
115
|
+
| `区域左上角X坐标` | 数字 | 是 | - | 区域左上角 X 坐标 |
|
|
116
|
+
| `区域左上角Y坐标` | 数字 | 是 | - | 区域左上角 Y 坐标 |
|
|
117
|
+
| `区域右下角X坐标` | 数字 | 是 | - | 区域右下角 X 坐标 |
|
|
118
|
+
| `区域右下角Y坐标` | 数字 | 是 | - | 区域右下角 Y 坐标 |
|
|
119
|
+
|
|
120
|
+
**返回值:**
|
|
121
|
+
|
|
122
|
+
| 类型 | 描述 |
|
|
123
|
+
| -------- | -------------------------------- |
|
|
124
|
+
| `字符串` | 截图的图片 ID,失败时返回 `null` |
|
|
125
|
+
|
|
126
|
+
**示例:**
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
const 图片ID = $图片.截取区域(100, 100, 200, 200);
|
|
130
|
+
if (图片ID) {
|
|
131
|
+
$打印信息日志("截图成功");
|
|
132
|
+
// 使用图片...
|
|
133
|
+
$图片.释放图片(图片ID);
|
|
134
|
+
} else {
|
|
135
|
+
$打印错误日志("截图失败");
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 读取图片 - 从文件路径或图片ID读取图片。
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
function 读取图片(图片路径: 字符串): 字符串 | null;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**参数:**
|
|
146
|
+
|
|
147
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
148
|
+
| ---------- | ------ | -------- | ------ | ---------------------------------------------------------------------- |
|
|
149
|
+
| `图片路径` | 字符串 | 是 | - | 图片文件路径 支持 res 目录文件和手机文件绝对路径,支持特殊标识的图片ID |
|
|
150
|
+
|
|
151
|
+
**返回值:**
|
|
152
|
+
|
|
153
|
+
| 类型 | 描述 |
|
|
154
|
+
| -------- | -------------------------- |
|
|
155
|
+
| `字符串` | 图片 ID,失败时返回 `null` |
|
|
156
|
+
|
|
157
|
+
**示例:**
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
const 图片ID = $图片.读取图片("template.jpg");
|
|
161
|
+
if (图片ID) {
|
|
162
|
+
$打印信息日志("图片读取成功");
|
|
163
|
+
// 使用图片...
|
|
164
|
+
$图片.释放图片(图片ID);
|
|
165
|
+
} else {
|
|
166
|
+
$打印错误日志("图片读取失败");
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 保存图片 - 保存图片到指定路径。
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
function 保存图片(图片ID: 字符串, 保存路径: 字符串): 布尔值;
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**参数:**
|
|
177
|
+
|
|
178
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
179
|
+
| ---------- | ------ | -------- | ------ | -------- |
|
|
180
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
181
|
+
| `保存路径` | 字符串 | 是 | - | 保存路径 |
|
|
182
|
+
|
|
183
|
+
**返回值:**
|
|
184
|
+
|
|
185
|
+
| 类型 | 描述 |
|
|
186
|
+
| -------- | ------------------------------------- |
|
|
187
|
+
| `布尔值` | `true` 表示保存成功,`false` 表示失败 |
|
|
188
|
+
|
|
189
|
+
**示例:**
|
|
190
|
+
|
|
191
|
+
```javascript
|
|
192
|
+
const 图片ID = $图片.截取全屏();
|
|
193
|
+
// 获取手机文档目录
|
|
194
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
195
|
+
if (图片ID) {
|
|
196
|
+
$图片.保存图片(图片ID, `${文档目录}/screenshot.jpg`);
|
|
197
|
+
$图片.释放图片(图片ID);
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## 内存管理
|
|
202
|
+
|
|
203
|
+
### 释放图片 - 释放单个图片的内存。
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
function 释放图片(图片ID: 字符串): 无返回值;
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**参数:**
|
|
210
|
+
|
|
211
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
212
|
+
| -------- | ------ | -------- | ------ | --------------- |
|
|
213
|
+
| `图片ID` | 字符串 | 是 | - | 要释放的图片 ID |
|
|
214
|
+
|
|
215
|
+
### 释放所有图片 - 释放所有图片的内存。
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
function 释放所有图片(): 无返回值;
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 图片是否被释放 - 检查图片是否已被释放。
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
function 图片是否被释放(图片ID: 字符串): 布尔值;
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**参数:**
|
|
228
|
+
|
|
229
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
230
|
+
| -------- | ------ | -------- | ------ | ------- |
|
|
231
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
232
|
+
|
|
233
|
+
**返回值:**
|
|
234
|
+
|
|
235
|
+
| 类型 | 描述 |
|
|
236
|
+
| -------- | ------------------------------------- |
|
|
237
|
+
| `布尔值` | `true` 表示已释放,`false` 表示未释放 |
|
|
238
|
+
|
|
239
|
+
**示例:**
|
|
240
|
+
|
|
241
|
+
```javascript
|
|
242
|
+
const 图片ID = $图片.截取全屏();
|
|
243
|
+
if (图片ID) {
|
|
244
|
+
$打印信息日志(`释放前: ${$图片.图片是否被释放(图片ID)}`); // false
|
|
245
|
+
$图片.释放图片(图片ID);
|
|
246
|
+
$打印信息日志(`释放后: ${$图片.图片是否被释放(图片ID)}`); // true
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## 图片信息
|
|
251
|
+
|
|
252
|
+
### 获取图片大小 - 获取图片尺寸。
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
function 获取图片大小(图片ID: 字符串): { width: 数字; height: 数字 } | null;
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**参数:**
|
|
259
|
+
|
|
260
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
261
|
+
| -------- | ------ | -------- | ------ | ------- |
|
|
262
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
263
|
+
|
|
264
|
+
**返回值:**
|
|
265
|
+
|
|
266
|
+
| 类型 | 描述 |
|
|
267
|
+
| --------------------------------------- | -------------------------------------------------------------- |
|
|
268
|
+
| `{ width: 数字; height: 数字 } \| null` | 图片尺寸对象,包含 `width` 和 `height` 属性,失败时返回 `null` |
|
|
269
|
+
|
|
270
|
+
**示例:**
|
|
271
|
+
|
|
272
|
+
```javascript
|
|
273
|
+
const 图片ID = $图片.截取全屏();
|
|
274
|
+
if (图片ID) {
|
|
275
|
+
const 图片尺寸 = $图片.获取图片大小(图片ID);
|
|
276
|
+
if (图片尺寸) {
|
|
277
|
+
$打印信息日志(`图片尺寸: ${图片尺寸.width} x ${图片尺寸.height}`);
|
|
278
|
+
}
|
|
279
|
+
$图片.释放图片(图片ID);
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 取像素颜色 - 获取图片指定坐标的像素颜色值。
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
function 取像素颜色(图片ID: 字符串, 坐标x: 数字, 坐标y: 数字): 数字;
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**参数:**
|
|
290
|
+
|
|
291
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
292
|
+
| -------- | ------ | -------- | ------ | ------- |
|
|
293
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
294
|
+
| `坐标x` | 数字 | 是 | - | X 坐标 |
|
|
295
|
+
| `坐标y` | 数字 | 是 | - | Y 坐标 |
|
|
296
|
+
|
|
297
|
+
**返回值:**
|
|
298
|
+
|
|
299
|
+
| 类型 | 描述 |
|
|
300
|
+
| ------ | -------------- |
|
|
301
|
+
| `数字` | 颜色值(整型) |
|
|
302
|
+
|
|
303
|
+
**示例:**
|
|
304
|
+
|
|
305
|
+
```javascript
|
|
306
|
+
const 图片ID = $图片.截取全屏();
|
|
307
|
+
if (图片ID) {
|
|
308
|
+
const 颜色值 = $图片.取像素颜色(图片ID, 100, 100);
|
|
309
|
+
const 颜色Hex = $图片.颜色转16进制字符串(颜色值);
|
|
310
|
+
$打印信息日志(`坐标 (100, 100) 的颜色: ${颜色Hex}`);
|
|
311
|
+
$图片.释放图片(图片ID);
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 颜色转 16 进制字符串 - 将整型颜色值转换为 16 进制 RGB 字符串。
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
function 颜色转16进制字符串(颜色值: 数字): 字符串;
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**参数:**
|
|
322
|
+
|
|
323
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
324
|
+
| -------- | ---- | -------- | ------ | ---------- |
|
|
325
|
+
| `颜色值` | 数字 | 是 | - | 整型颜色值 |
|
|
326
|
+
|
|
327
|
+
**返回值:**
|
|
328
|
+
|
|
329
|
+
| 类型 | 描述 |
|
|
330
|
+
| -------- | ------------------ |
|
|
331
|
+
| `字符串` | 16 进制 RGB 字符串 |
|
|
332
|
+
|
|
333
|
+
## 颜色识别
|
|
334
|
+
|
|
335
|
+
### 单点找色
|
|
336
|
+
|
|
337
|
+
```typescript
|
|
338
|
+
function 单点找色(
|
|
339
|
+
图片ID: 字符串,
|
|
340
|
+
颜色: 字符串,
|
|
341
|
+
阈值: 数字,
|
|
342
|
+
区域左上角x: 数字,
|
|
343
|
+
区域左上角y: 数字,
|
|
344
|
+
区域右下角x: 数字,
|
|
345
|
+
区域右下角y: 数字,
|
|
346
|
+
限制数量: 数字,
|
|
347
|
+
查找方向: 数字,
|
|
348
|
+
): { x: 数字; y: 数字 }[];
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**参数:**
|
|
352
|
+
|
|
353
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
354
|
+
| ------------- | ------ | -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
355
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
356
|
+
| `颜色` | 字符串 | 是 | - | 颜色值,支持 "主色-偏色" 格式,如 "#6DD1E6-#101010" |
|
|
357
|
+
| `阈值` | 数字 | 是 | - | 颜色匹配阈值 (0.0-1.0) |
|
|
358
|
+
| `区域左上角x` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
359
|
+
| `区域左上角y` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
360
|
+
| `区域右下角x` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
361
|
+
| `区域右下角y` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
362
|
+
| `限制数量` | 数字 | 是 | - | 最大查找数量 |
|
|
363
|
+
| `查找方向` | 数字 | 是 | - | 查找方向(1-8) 1 左上角到右下角,纵向开始 2 左上角到右下角,横向开始 3 右上角到左下角,横向开始 4 右上角到左下角,纵向开始 5 右下角到左上角,纵向开始 6 右下角到左上角,横向开始 7 左下角到右上角,横向开始 8 左下角到右上角,纵向开始 |
|
|
364
|
+
|
|
365
|
+
**返回值:**
|
|
366
|
+
|
|
367
|
+
| 类型 | 描述 |
|
|
368
|
+
| ------ | ---------------------------------------------- |
|
|
369
|
+
| `数组` | 找到的颜色点数组,每个元素包含 `x` 和 `y` 属性 |
|
|
370
|
+
|
|
371
|
+
**示例:**
|
|
372
|
+
|
|
373
|
+
```javascript
|
|
374
|
+
const 图片ID = $图片.截取全屏();
|
|
375
|
+
if (图片ID) {
|
|
376
|
+
// 查找蓝色按钮
|
|
377
|
+
const 坐标数组 = $图片.单点找色(
|
|
378
|
+
图片ID,
|
|
379
|
+
"#1E90FF-#101010", // 蓝色,允许一定偏差
|
|
380
|
+
0.9, // 阈值
|
|
381
|
+
0,
|
|
382
|
+
0, // 搜索区域左上角
|
|
383
|
+
400,
|
|
384
|
+
800, // 搜索区域右下角
|
|
385
|
+
5, // 最多找 5 个
|
|
386
|
+
1, // 从左到右查找
|
|
387
|
+
);
|
|
388
|
+
|
|
389
|
+
if (坐标数组.length > 0) {
|
|
390
|
+
$打印信息日志(`找到 ${坐标数组.length} 个蓝色点`);
|
|
391
|
+
// 点击第一个找到的点
|
|
392
|
+
$动作.点击(坐标数组[0].x, 坐标数组[0].y, 100, false);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
$图片.释放图片(图片ID);
|
|
396
|
+
}
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### 多点找色
|
|
400
|
+
|
|
401
|
+
```typescript
|
|
402
|
+
function 多点找色(
|
|
403
|
+
图片ID: 字符串,
|
|
404
|
+
第一个颜色: 字符串,
|
|
405
|
+
阈值: 数字,
|
|
406
|
+
颜色点: 字符串,
|
|
407
|
+
区域左上角x: 数字,
|
|
408
|
+
区域左上角y: 数字,
|
|
409
|
+
区域右下角x: 数字,
|
|
410
|
+
区域右下角y: 数字,
|
|
411
|
+
限制数量: 数字,
|
|
412
|
+
查找方向: 数字,
|
|
413
|
+
): { x: 数字; y: 数字 }[];
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**参数:**
|
|
417
|
+
|
|
418
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
419
|
+
| ------------- | ------ | -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
420
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
421
|
+
| `第一个颜色` | 字符串 | 是 | - | 第一个颜色 |
|
|
422
|
+
| `阈值` | 数字 | 是 | - | 颜色匹配阈值 (0.0-1.0) |
|
|
423
|
+
| `颜色点` | 字符串 | 是 | - | 其他颜色点的相对位置和颜色,格式:`x1\|y1\|color1-偏色,x2\|y2\|color2-偏色` |
|
|
424
|
+
| `区域左上角x` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
425
|
+
| `区域左上角y` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
426
|
+
| `区域右下角x` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
427
|
+
| `区域右下角y` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
428
|
+
| `限制数量` | 数字 | 是 | - | 最大查找数量 |
|
|
429
|
+
| `查找方向` | 数字 | 是 | - | 查找方向(1-8) 1 左上角到右下角,纵向开始 2 左上角到右下角,横向开始 3 右上角到左下角,横向开始 4 右上角到左下角,纵向开始 5 右下角到左上角,纵向开始 6 右下角到左上角,横向开始 7 左下角到右上角,横向开始 8 左下角到右上角,纵向开始 |
|
|
430
|
+
|
|
431
|
+
**返回值:**
|
|
432
|
+
|
|
433
|
+
| 类型 | 描述 |
|
|
434
|
+
| ---------------------------- | ---------------------------------------------- |
|
|
435
|
+
| `数组<{ x: 数字; y: 数字 }>` | 找到的颜色点数组,每个元素包含 `x` 和 `y` 属性 |
|
|
436
|
+
|
|
437
|
+
**示例:**
|
|
438
|
+
|
|
439
|
+
```javascript
|
|
440
|
+
const 图片ID = $图片.截取全屏();
|
|
441
|
+
if (图片ID) {
|
|
442
|
+
// 查找特定的颜色组合(如按钮的特征颜色)
|
|
443
|
+
const 坐标数组 = $图片.多点找色(
|
|
444
|
+
图片ID,
|
|
445
|
+
"#1E90FF-#101010", // 主颜色
|
|
446
|
+
0.9, // 阈值
|
|
447
|
+
"10|0|#FFFFFF-#101010,20|0|#000000-#101010", // 相对位置的其他颜色
|
|
448
|
+
0,
|
|
449
|
+
0,
|
|
450
|
+
400,
|
|
451
|
+
800,
|
|
452
|
+
1,
|
|
453
|
+
1,
|
|
454
|
+
);
|
|
455
|
+
|
|
456
|
+
if (坐标数组.length > 0) {
|
|
457
|
+
$打印信息日志(`找到 ${坐标数组.length} 个匹配的颜色组合`);
|
|
458
|
+
// 点击第一个找到的点
|
|
459
|
+
$动作.点击(坐标数组[0].x, 坐标数组[0].y, 100, false);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
$图片.释放图片(图片ID);
|
|
463
|
+
}
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### 多点比色
|
|
467
|
+
|
|
468
|
+
```typescript
|
|
469
|
+
function 多点比色(图片ID: 字符串, 颜色点: 字符串, 阈值: 数字): 布尔值;
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**参数:**
|
|
473
|
+
|
|
474
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
475
|
+
| -------- | ------ | -------- | ------ | --------------------------------------------------------------------------- |
|
|
476
|
+
| `图片ID` | 字符串 | 是 | - | 图片 ID |
|
|
477
|
+
| `颜色点` | 字符串 | 是 | - | 其他颜色点的相对位置和颜色,格式:`x1\|y1\|color1-偏色,x2\|y2\|color2-偏色` |
|
|
478
|
+
| `阈值` | 数字 | 是 | - | 颜色匹配阈值 (0.0-1.0) |
|
|
479
|
+
|
|
480
|
+
**返回值:**
|
|
481
|
+
|
|
482
|
+
| 类型 | 描述 |
|
|
483
|
+
| -------- | ------------------------------------------- |
|
|
484
|
+
| `布尔值` | 如果颜色匹配则返回 `true`,否则返回 `false` |
|
|
485
|
+
|
|
486
|
+
**示例:**
|
|
487
|
+
|
|
488
|
+
```javascript
|
|
489
|
+
const 图片ID = $图片.截取全屏();
|
|
490
|
+
if (图片ID) {
|
|
491
|
+
// 检查特定区域是否为预期颜色
|
|
492
|
+
const isMatch = $图片.多点比色(
|
|
493
|
+
图片ID,
|
|
494
|
+
"1|2|#6DD1E6-#101010",
|
|
495
|
+
0.9, // 阈值
|
|
496
|
+
);
|
|
497
|
+
|
|
498
|
+
if (isMatch) {
|
|
499
|
+
$打印信息日志("颜色匹配");
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
$图片.释放图片(图片ID);
|
|
503
|
+
}
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
## 图像识别
|
|
507
|
+
|
|
508
|
+
### 找图 - 在图片中查找模板图片。
|
|
509
|
+
|
|
510
|
+
```typescript
|
|
511
|
+
function 找图(
|
|
512
|
+
图片ID: 字符串,
|
|
513
|
+
模板图片ID: 字符串,
|
|
514
|
+
区域左上角x: 数字,
|
|
515
|
+
区域左上角y: 数字,
|
|
516
|
+
区域右下角x: 数字,
|
|
517
|
+
区域右下角y: 数字,
|
|
518
|
+
阈值: 数字,
|
|
519
|
+
限制数量: 数字,
|
|
520
|
+
方法: 数字,
|
|
521
|
+
是否使用RGB找图?: 布尔值,
|
|
522
|
+
选项?: {
|
|
523
|
+
scaleFactors?: 数字[];
|
|
524
|
+
},
|
|
525
|
+
): {
|
|
526
|
+
index: 数字; // 模板图片索引
|
|
527
|
+
x: 数字;
|
|
528
|
+
y: 数字;
|
|
529
|
+
width: 数字;
|
|
530
|
+
height: 数字;
|
|
531
|
+
confidence: 数字;
|
|
532
|
+
centerX: 数字;
|
|
533
|
+
centerY: 数字;
|
|
534
|
+
ex: 数字;
|
|
535
|
+
ey: 数字;
|
|
536
|
+
}[];
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
**参数:**
|
|
540
|
+
|
|
541
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
542
|
+
| ------------------- | ------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
543
|
+
| `图片ID` | 字符串 | 是 | - | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取) |
|
|
544
|
+
| `模板图片ID` | 字符串 | 是 | - | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取)支持按\|分割,多个图片按顺序查找 |
|
|
545
|
+
| `区域左上角x` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
546
|
+
| `区域左上角y` | 数字 | 是 | - | 搜索区域左上角坐标 |
|
|
547
|
+
| `区域右下角x` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
548
|
+
| `区域右下角y` | 数字 | 是 | - | 搜索区域右下角坐标 |
|
|
549
|
+
| `阈值` | 数字 | 是 | - | 匹配阈值 (0.0-1.0) 全分辨率匹配时建议 0.5-0.6 其他建议 0.9-0.995 |
|
|
550
|
+
| `限制数量` | 数字 | 是 | - | 最大查找数量,每个模板图片最多找 限制数量 个匹配结果 |
|
|
551
|
+
| `方法` | 数字 | 是 | - | 匹配方法 0 SIFT 全分辨率 1 TM_SQDIFF_NORMED 3 TM_CCORR_NORMED 5 TM_CCOEFF_NORMED 99 全分辨率缩放匹配法 |
|
|
552
|
+
| `是否使用RGB找图` | 布尔值 | 否 | `false` | 是否使用 RGB 找图,默认 `false` 会自动转灰度找图 |
|
|
553
|
+
| `选项` | 对象 | 否 | - | 选项 |
|
|
554
|
+
| `选项.scaleFactors` | 数字\[] | 否 | `[1.0, 0.9, 1.1, 0.8, 1.2]` | 缩放匹配法缩放因子数组,默认 `[1.0, 0.9, 1.1, 0.8, 1.2]` 会在这些缩放比例下进行匹配。 |
|
|
555
|
+
|
|
556
|
+
**返回值:**
|
|
557
|
+
|
|
558
|
+
| 类型 | 描述 |
|
|
559
|
+
| ------ | -------------------------------------------------------------------------------------- |
|
|
560
|
+
| `数组` | 找到的匹配结果数组,每个元素包含位置、尺寸和置信度,其中 index 为模板图片索引从 0 开始 |
|
|
561
|
+
|
|
562
|
+
**示例:**
|
|
563
|
+
|
|
564
|
+
```javascript
|
|
565
|
+
const 匹配区域数组 = $图片.找图(
|
|
566
|
+
"screen",
|
|
567
|
+
"template.jpg|template2.jpg",
|
|
568
|
+
0,
|
|
569
|
+
0,
|
|
570
|
+
400,
|
|
571
|
+
800, // 搜索区域
|
|
572
|
+
0.8, // 80% 匹配度
|
|
573
|
+
3, // 最多找 3 个
|
|
574
|
+
5, // 匹配方法
|
|
575
|
+
false, // 不使用 rgb 找图
|
|
576
|
+
);
|
|
577
|
+
|
|
578
|
+
if (匹配区域数组.length > 0) {
|
|
579
|
+
const best = 匹配区域数组[0];
|
|
580
|
+
$打印信息日志(`找到匹配,置信度: ${best.confidence}`);
|
|
581
|
+
|
|
582
|
+
// 点击匹配区域的中心
|
|
583
|
+
const centerX = best.centerX;
|
|
584
|
+
const centerY = best.centerY;
|
|
585
|
+
$动作.点击(centerX, centerY, 100, false);
|
|
586
|
+
}
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
## 图像处理
|
|
590
|
+
|
|
591
|
+
### 裁剪图片
|
|
592
|
+
|
|
593
|
+
```typescript
|
|
594
|
+
function 裁剪图片(
|
|
595
|
+
图片ID: 字符串,
|
|
596
|
+
区域左上角x: 数字,
|
|
597
|
+
区域左上角y: 数字,
|
|
598
|
+
区域右下角x: 数字,
|
|
599
|
+
区域右下角y: 数字,
|
|
600
|
+
): 字符串;
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
**参数:**
|
|
604
|
+
|
|
605
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
606
|
+
| ------------- | ------ | -------- | ------ | ------------------ |
|
|
607
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
608
|
+
| `区域左上角x` | 数字 | 是 | - | 裁剪区域左上角坐标 |
|
|
609
|
+
| `区域左上角y` | 数字 | 是 | - | 裁剪区域左上角坐标 |
|
|
610
|
+
| `区域右下角x` | 数字 | 是 | - | 裁剪区域右下角坐标 |
|
|
611
|
+
| `区域右下角y` | 数字 | 是 | - | 裁剪区域右下角坐标 |
|
|
612
|
+
|
|
613
|
+
**返回值:**
|
|
614
|
+
|
|
615
|
+
| 类型 | 描述 |
|
|
616
|
+
| -------- | ----------------- |
|
|
617
|
+
| `字符串` | 裁剪后的新图片 ID |
|
|
618
|
+
|
|
619
|
+
**示例:**
|
|
620
|
+
|
|
621
|
+
```javascript
|
|
622
|
+
const 图片ID = $图片.截取全屏();
|
|
623
|
+
// 获取手机文档目录
|
|
624
|
+
const dir = $文件.获取内部目录("documents");
|
|
625
|
+
if (图片ID) {
|
|
626
|
+
// 裁剪屏幕上半部分
|
|
627
|
+
const screen = $设备.获取屏幕实际宽高();
|
|
628
|
+
const 裁剪后的图片ID = $图片.裁剪图片(
|
|
629
|
+
图片ID,
|
|
630
|
+
0,
|
|
631
|
+
0,
|
|
632
|
+
screen.width,
|
|
633
|
+
screen.height / 2,
|
|
634
|
+
);
|
|
635
|
+
|
|
636
|
+
if (裁剪后的图片ID) {
|
|
637
|
+
$图片.保存图片(裁剪后的图片ID, `${dir}/top_half.jpg`);
|
|
638
|
+
$图片.释放图片(裁剪后的图片ID);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
$图片.释放图片(图片ID);
|
|
642
|
+
}
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
### 旋转图片
|
|
646
|
+
|
|
647
|
+
```typescript
|
|
648
|
+
function 旋转图片(图片ID: 字符串, 角度: 数字): 字符串 | null;
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
**参数:**
|
|
652
|
+
|
|
653
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
654
|
+
| -------- | ------ | -------- | ------ | ----------------------------- |
|
|
655
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
656
|
+
| `角度` | 数字 | 是 | - | 旋转角度,只能是 90、-90、180 |
|
|
657
|
+
|
|
658
|
+
**返回值:**
|
|
659
|
+
|
|
660
|
+
| 类型 | 描述 |
|
|
661
|
+
| ---------------- | ----------------------------------- |
|
|
662
|
+
| `字符串 \| null` | 旋转后的新图片 ID 失败时返回 `null` |
|
|
663
|
+
|
|
664
|
+
**示例:**
|
|
665
|
+
|
|
666
|
+
```typescript
|
|
667
|
+
const 图片ID = $图片.读取图片("photo.jpg");
|
|
668
|
+
// 获取手机文档目录
|
|
669
|
+
const dir = $文件.获取内部目录("documents");
|
|
670
|
+
if (图片ID) {
|
|
671
|
+
const 旋转后的图片ID = $图片.旋转图片(图片ID, 90);
|
|
672
|
+
if (旋转后的图片ID) {
|
|
673
|
+
$图片.保存图片(旋转后的图片ID, `${dir}/photo_rotated.jpg`);
|
|
674
|
+
$图片.释放图片(旋转后的图片ID);
|
|
675
|
+
}
|
|
676
|
+
$图片.释放图片(图片ID);
|
|
677
|
+
}
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### 灰度化图片
|
|
681
|
+
|
|
682
|
+
```typescript
|
|
683
|
+
function 灰度化图片(图片ID: 字符串): 字符串;
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
**参数:**
|
|
687
|
+
|
|
688
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
689
|
+
| -------- | ------ | -------- | ------ | --------- |
|
|
690
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
691
|
+
|
|
692
|
+
**返回值:**
|
|
693
|
+
|
|
694
|
+
| 类型 | 描述 |
|
|
695
|
+
| -------- | ------------------- |
|
|
696
|
+
| `字符串` | 灰度化后的新图片 ID |
|
|
697
|
+
|
|
698
|
+
**示例:**
|
|
699
|
+
|
|
700
|
+
```javascript
|
|
701
|
+
const 图片ID = $图片.读取图片("photo.jpg");
|
|
702
|
+
// 获取手机文档目录
|
|
703
|
+
const dir = $文件.获取内部目录("documents");
|
|
704
|
+
if (图片ID) {
|
|
705
|
+
const 灰度化后的图片ID = $图片.灰度化图片(图片ID);
|
|
706
|
+
if (灰度化后的图片ID) {
|
|
707
|
+
$图片.保存图片(灰度化后的图片ID, `${dir}/photo_gray.jpg`);
|
|
708
|
+
$图片.释放图片(灰度化后的图片ID);
|
|
709
|
+
}
|
|
710
|
+
$图片.释放图片(图片ID);
|
|
711
|
+
}
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
### 二值化图片
|
|
715
|
+
|
|
716
|
+
```typescript
|
|
717
|
+
function 二值化图片(图片ID: 字符串, 阈值: 数字): 字符串;
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
**参数:**
|
|
721
|
+
|
|
722
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
723
|
+
| -------- | ------ | -------- | ------ | ---------------------- |
|
|
724
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
725
|
+
| `阈值` | 数字 | 是 | - | 二值化阈值 (0.0-255.0) |
|
|
726
|
+
|
|
727
|
+
**返回值:**
|
|
728
|
+
|
|
729
|
+
| 类型 | 描述 |
|
|
730
|
+
| -------- | ------------------- |
|
|
731
|
+
| `字符串` | 二值化后的新图片 ID |
|
|
732
|
+
|
|
733
|
+
**示例:**
|
|
734
|
+
|
|
735
|
+
```javascript
|
|
736
|
+
const 图片ID = $图片.截取全屏();
|
|
737
|
+
// 获取手机文档目录
|
|
738
|
+
const dir = $文件.获取内部目录("documents");
|
|
739
|
+
if (图片ID) {
|
|
740
|
+
const 二值化后的图片ID = $图片.二值化图片(图片ID, 128);
|
|
741
|
+
if (二值化后的图片ID) {
|
|
742
|
+
$图片.保存图片(二值化后的图片ID, `${dir}/screenshot_binary.jpg`);
|
|
743
|
+
$图片.释放图片(二值化后的图片ID);
|
|
744
|
+
}
|
|
745
|
+
$图片.释放图片(图片ID);
|
|
746
|
+
}
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
### 绘制矩形
|
|
750
|
+
|
|
751
|
+
```typescript
|
|
752
|
+
function 绘制矩形(
|
|
753
|
+
图片ID: 字符串,
|
|
754
|
+
坐标x: 数字,
|
|
755
|
+
坐标y: 数字,
|
|
756
|
+
坐标ex: 数字,
|
|
757
|
+
坐标ey: 数字,
|
|
758
|
+
颜色: 字符串,
|
|
759
|
+
线宽: 数字,
|
|
760
|
+
): 无返回值;
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
**参数:**
|
|
764
|
+
|
|
765
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
766
|
+
| ---------------- | ------ | -------- | ------ | --------------------------- |
|
|
767
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
768
|
+
| `坐标x, 坐标y` | 数字 | 是 | - | 矩形左上角坐标 |
|
|
769
|
+
| `坐标ex, 坐标ey` | 数字 | 是 | - | 矩形右下角坐标 |
|
|
770
|
+
| `颜色` | 字符串 | 是 | - | 颜色,如 "#FF0000" 表示红色 |
|
|
771
|
+
| `线宽` | 数字 | 是 | - | 线宽 |
|
|
772
|
+
|
|
773
|
+
**示例:**
|
|
774
|
+
|
|
775
|
+
```javascript
|
|
776
|
+
// 获取手机文档目录
|
|
777
|
+
const dir = $文件.获取内部目录("documents");
|
|
778
|
+
|
|
779
|
+
const 图片ID = $图片.截取全屏();
|
|
780
|
+
if (图片ID) {
|
|
781
|
+
$图片.绘制矩形(图片ID, 100, 100, 200, 100, "#FF0000", 2);
|
|
782
|
+
$图片.保存图片(图片ID, `${dir}/test.jpg`);
|
|
783
|
+
$图片.释放图片(图片ID);
|
|
784
|
+
}
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
### 扫码条码(支持一维码和二维码)
|
|
788
|
+
|
|
789
|
+
```typescript
|
|
790
|
+
function 扫描条码(图片ID: 字符串): 字符串 | null;
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
**参数:**
|
|
794
|
+
|
|
795
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
796
|
+
| -------- | ------ | -------- | ------ | --------- |
|
|
797
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
798
|
+
|
|
799
|
+
**返回值:**
|
|
800
|
+
|
|
801
|
+
| 类型 | 描述 |
|
|
802
|
+
| ---------------- | --------------------------- |
|
|
803
|
+
| `字符串 \| null` | 扫码结果,失败时返回 `null` |
|
|
804
|
+
|
|
805
|
+
**示例:**
|
|
806
|
+
|
|
807
|
+
```javascript
|
|
808
|
+
const 图片ID = $图片.截取全屏();
|
|
809
|
+
if (图片ID) {
|
|
810
|
+
const 扫码结果 = $图片.扫描条码(图片ID);
|
|
811
|
+
if (扫码结果) {
|
|
812
|
+
$打印信息日志(`扫码结果: ${扫码结果}`);
|
|
813
|
+
} else {
|
|
814
|
+
$打印信息日志("扫码失败");
|
|
815
|
+
}
|
|
816
|
+
$图片.释放图片(图片ID);
|
|
817
|
+
}
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
## Base64 转换
|
|
821
|
+
|
|
822
|
+
### base64 转图片
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
function base64转图片(base64: 字符串): 字符串;
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
**参数:**
|
|
829
|
+
|
|
830
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
831
|
+
| -------- | ------ | -------- | ------ | ------------- |
|
|
832
|
+
| `base64` | 字符串 | 是 | - | Base64 字符串 |
|
|
833
|
+
|
|
834
|
+
**返回值:**
|
|
835
|
+
|
|
836
|
+
| 类型 | 描述 |
|
|
837
|
+
| -------- | --------------- |
|
|
838
|
+
| `字符串` | 转换后的图片 ID |
|
|
839
|
+
|
|
840
|
+
**示例:**
|
|
841
|
+
|
|
842
|
+
```javascript
|
|
843
|
+
const base64Data =
|
|
844
|
+
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg==";
|
|
845
|
+
const 图片ID = $图片.base64转图片(base64Data);
|
|
846
|
+
|
|
847
|
+
// 获取手机文档目录
|
|
848
|
+
const dir = $文件.获取内部目录("documents");
|
|
849
|
+
if (图片ID) {
|
|
850
|
+
$图片.保存图片(图片ID, `${dir}/base64.jpg`);
|
|
851
|
+
$图片.释放图片(图片ID);
|
|
852
|
+
}
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
### 图片转base64
|
|
856
|
+
|
|
857
|
+
```typescript
|
|
858
|
+
function 图片转base64(图片ID: 字符串, 格式: 字符串, 质量: 数字): 字符串;
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
**参数:**
|
|
862
|
+
|
|
863
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
864
|
+
| -------- | ------ | -------- | ------ | ------------------------------ |
|
|
865
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
866
|
+
| `格式` | 字符串 | 是 | - | 图片格式(如 "jpg", "png") |
|
|
867
|
+
| `质量` | 数字 | 是 | - | 质量 (1-100),数字越大质量越高 |
|
|
868
|
+
|
|
869
|
+
**返回值:**
|
|
870
|
+
|
|
871
|
+
| 类型 | 描述 |
|
|
872
|
+
| -------- | ---------------------- |
|
|
873
|
+
| `字符串` | 转换后的 Base64 字符串 |
|
|
874
|
+
|
|
875
|
+
**示例:**
|
|
876
|
+
|
|
877
|
+
```javascript
|
|
878
|
+
const 图片ID = $图片.截取全屏();
|
|
879
|
+
if (图片ID) {
|
|
880
|
+
const base64 = $图片.图片转base64(图片ID, "jpg", 90);
|
|
881
|
+
$打印信息日志(`Base64 数据: ${base64.substring(0, 100)}...`);
|
|
882
|
+
$图片.释放图片(图片ID);
|
|
883
|
+
}
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
## 安卓独有方法
|
|
887
|
+
|
|
888
|
+
### 获取Bitmap - 获取安卓的Bitmap对象
|
|
889
|
+
|
|
890
|
+
此方法仅在安卓可用,用于获取图片的 Bitmap 对象。
|
|
891
|
+
|
|
892
|
+
```typescript
|
|
893
|
+
function 获取Bitmap(图片ID: 字符串): 任意类型;
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
**参数:**
|
|
897
|
+
|
|
898
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
899
|
+
| -------- | ------ | -------- | ------ | --------- |
|
|
900
|
+
| `图片ID` | 字符串 | 是 | - | 原图片 ID |
|
|
901
|
+
|
|
902
|
+
**返回值:**
|
|
903
|
+
|
|
904
|
+
| 类型 | 描述 |
|
|
905
|
+
| ----- | ---------------- |
|
|
906
|
+
| `any` | 安卓的Bitmap对象 |
|
|
907
|
+
|
|
908
|
+
**示例:**
|
|
909
|
+
|
|
910
|
+
```javascript
|
|
911
|
+
const 图片ID = $图片.截取全屏();
|
|
912
|
+
if (图片ID) {
|
|
913
|
+
const bitmap = $图片.获取Bitmap(图片ID);
|
|
914
|
+
$打印信息日志(`Bitmap 对象: ${bitmap}`);
|
|
915
|
+
// 注意:使用完 Bitmap 后,需要调用 recycle() 方法释放内存
|
|
916
|
+
bitmap.recycle();
|
|
917
|
+
$图片.释放图片(图片ID);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
// 快捷获取截屏bitmap
|
|
921
|
+
const bitmap = $图片.获取Bitmap("screen");
|
|
922
|
+
logi(`Bitmap 对象: ${bitmap}`);
|
|
923
|
+
bitmap.recycle();
|
|
924
|
+
```
|