• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (Zoom)
2<!--Kit: Camera Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @qano-->
5<!--Designer: @leo_ysl-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Interface首批接口从API version 11开始支持。
13
14Zoom 继承自 [ZoomQuery](arkts-apis-camera-ZoomQuery.md)。
15
16变焦类,对设备变焦操作。
17
18## 导入模块
19
20```ts
21import { camera } from '@kit.CameraKit';
22```
23
24## setZoomRatio<sup>11+</sup>
25
26setZoomRatio(zoomRatio: number): void
27
28设置变焦比,变焦精度最高为小数点后两位,如果设置超过支持的精度范围,则只保留精度范围内数值。
29
30**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
31
32**系统能力:** SystemCapability.Multimedia.Camera.Core
33
34**参数:**
35
36| 参数名       | 类型                  | 必填 | 说明                                                                                                                              |
37| --------- | -------------------- | ---- |---------------------------------------------------------------------------------------------------------------------------------|
38| zoomRatio | number               | 是   | 可变焦距比,通过[getZoomRatioRange](arkts-apis-camera-ZoomQuery.md#getzoomratiorange11)获取支持的变焦范围,如果设置超过支持范围的值,则只保留精度范围内数值。<br>设置可变焦距比到底层生效需要一定时间,获取正确设置的可变焦距比需要等待1~2帧的时间。 |
39
40**错误码:**
41
42以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
43
44| 错误码ID         | 错误信息        |
45| --------------- | --------------- |
46| 7400103                |  Session not config.                                   |
47
48**示例:**
49
50```ts
51import { BusinessError } from '@kit.BasicServicesKit';
52
53function setZoomRatio(photoSession: camera.PhotoSession, zoomRatioRange: Array<number>): void {
54  if (zoomRatioRange === undefined || zoomRatioRange.length <= 0) {
55    return;
56  }
57  let zoomRatio = zoomRatioRange[0];
58  try {
59    photoSession.setZoomRatio(zoomRatio);
60  } catch (error) {
61    // 失败返回错误码error.code并处理。
62    let err = error as BusinessError;
63    console.error(`The setZoomRatio call failed. error code: ${err.code}`);
64  }
65}
66```
67
68## getZoomRatio<sup>11+</sup>
69
70getZoomRatio(): number
71
72获取当前的变焦比。
73
74**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
75
76**系统能力:** SystemCapability.Multimedia.Camera.Core
77
78**返回值:**
79
80| 类型        | 说明                          |
81| ---------- | ----------------------------- |
82| number    | 获取当前的变焦比结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 |
83
84**错误码:**
85
86以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
87
88| 错误码ID         | 错误信息        |
89| --------------- | --------------- |
90| 7400103                |  Session not config.                                   |
91| 7400201                |  Camera service fatal error.                           |
92
93**示例:**
94
95```ts
96import { BusinessError } from '@kit.BasicServicesKit';
97
98function getZoomRatio(photoSession: camera.PhotoSession): number {
99  const invalidValue: number = -1;
100  let zoomRatio: number = invalidValue;
101  try {
102    zoomRatio = photoSession.getZoomRatio();
103  } catch (error) {
104    // 失败返回错误码error.code并处理。
105    let err = error as BusinessError;
106    console.error(`The getZoomRatio call failed. error code: ${err.code}`);
107  }
108  return zoomRatio;
109}
110```
111
112## setSmoothZoom<sup>11+</sup>
113
114setSmoothZoom(targetRatio: number, mode?: SmoothZoomMode): void
115
116触发平滑变焦。
117
118**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
119
120**系统能力:** SystemCapability.Multimedia.Camera.Core
121
122**参数:**
123
124| 参数名       | 类型            | 必填 | 说明               |
125| ------------ | -------------- | ---- | ----------------- |
126| targetRatio  | number         | 是   | 目标值。通过[getZoomRatioRange](arkts-apis-camera-ZoomQuery.md#getzoomratiorange11)获取支持的变焦范围,如果设置超过支持范围的值,则只保留精度范围内数值。      |
127| mode         | [SmoothZoomMode](arkts-apis-camera-e.md#smoothzoommode11) | 否   | 平滑变焦模式。默认为0。     |
128
129**示例:**
130
131```ts
132import { BusinessError } from '@kit.BasicServicesKit';
133
134function setSmoothZoom(sessionExtendsZoom: camera.Zoom, targetZoomRatio: number, mode: camera.SmoothZoomMode): void {
135  sessionExtendsZoom.setSmoothZoom(targetZoomRatio, mode);
136}
137```
138