• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (AuxiliaryPicture)
2<!--Kit: Image Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @aulight02-->
5<!--Designer: @liyang_bryan-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Interface首批接口从API version 13开始支持。
13
14辅助图一般用于辅助主图进行特殊信息的展示,使图像包含更丰富的信息。辅助图图像类,用于读取或写入图像的辅助图数据以及获取图像的辅助图信息。在调用AuxiliaryPicture的方法前,需要先通过[createAuxiliaryPicture](arkts-apis-image-f.md#imagecreateauxiliarypicture13)创建一个AuxiliaryPicture实例。
15
16## 导入模块
17
18```ts
19import { image } from '@kit.ImageKit';
20```
21
22## writePixelsFromBuffer<sup>13+</sup>
23
24writePixelsFromBuffer(data: ArrayBuffer): Promise\<void>
25
26读取ArrayBuffer中的辅助图片数据,并将数据写入AuxiliaryPicture对象,使用Promise形式返回。
27
28**系统能力:** SystemCapability.Multimedia.Image.Core
29
30**参数:**
31
32| 参数名 | 类型        | 必填 | 说明             |
33| ------ | ----------- | ---- | ---------------- |
34| data   | ArrayBuffer | 是   | 辅助图像素数据。 |
35
36**返回值:**
37
38| 类型           | 说明                                   |
39| -------------- | -------------------------------------- |
40| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
41
42**错误码:**
43
44以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
45
46| 错误码ID | 错误信息                                                     |
47| -------- | ------------------------------------------------------------ |
48| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
49
50**示例:**
51
52```ts
53async function WritePixelsFromBuffer(context: Context) {
54  const resourceMgr = context.resourceManager;
55  const rawFile = await resourceMgr.getRawFileContent("hdr.jpg"); // 需要支持hdr的图片。
56  let ops: image.SourceOptions = {
57    sourceDensity: 98,
58  }
59  let imageSource: image.ImageSource = image.createImageSource(rawFile.buffer as ArrayBuffer, ops);
60  let commodityPixelMap: image.PixelMap = await imageSource.createPixelMap();
61  let pictureObj: image.Picture = image.createPicture(commodityPixelMap);
62  let auxPictureObj: image.AuxiliaryPicture | null = pictureObj.getAuxiliaryPicture(image.AuxiliaryPictureType.GAINMAP);
63  if(auxPictureObj != null) {
64    let auxBuffer: ArrayBuffer = await auxPictureObj.readPixelsToBuffer();
65    await auxPictureObj.writePixelsFromBuffer(auxBuffer);
66    console.info('Write pixels from buffer success.');
67  } else {
68    console.error('AuxPictureObj is null.');
69  }
70}
71```
72
73## readPixelsToBuffer<sup>13+</sup>
74
75readPixelsToBuffer(): Promise\<ArrayBuffer>
76
77读取图像像素映射数据并将数据写入ArrayBuffer,使用Promise形式返回。
78
79**系统能力:** SystemCapability.Multimedia.Image.Core
80
81**返回值:**
82
83| 类型                  | 说明                              |
84| --------------------- | --------------------------------- |
85| Promise\<ArrayBuffer> | Promise对象。返回辅助图像素数据。 |
86
87**示例:**
88
89```ts
90import { BusinessError } from '@kit.BasicServicesKit';
91
92async function ReadPixelsToBuffer(context: Context) {
93  const resourceMgr = context.resourceManager;
94  const rawFile = await resourceMgr.getRawFileContent("hdr.jpg"); // 需要支持hdr的图片。
95  let ops: image.SourceOptions = {
96    sourceDensity: 98,
97  }
98  let imageSource: image.ImageSource = image.createImageSource(rawFile.buffer as ArrayBuffer, ops);
99  let commodityPixelMap: image.PixelMap = await imageSource.createPixelMap();
100  let pictureObj: image.Picture = image.createPicture(commodityPixelMap);
101  let auxPictureObj: image.AuxiliaryPicture | null = pictureObj.getAuxiliaryPicture(image.AuxiliaryPictureType.GAINMAP);
102  if(auxPictureObj != null) {
103    await auxPictureObj.readPixelsToBuffer().then((pixelsBuffer: ArrayBuffer) => {
104      console.info('Read pixels to buffer success.' );
105    }).catch((error: BusinessError) => {
106      console.error(`Read pixels to buffer failed error.code: ${error.code}, error.message: ${error.message}`);
107    });
108  } else {
109    console.error('AuxPictureObj is null.');
110  }
111}
112```
113
114## getType<sup>13+</sup>
115
116getType(): AuxiliaryPictureType
117
118获取辅助图的类型。
119
120**系统能力:** SystemCapability.Multimedia.Image.Core
121
122**返回值:**
123
124| 类型                                            | 说明                         |
125| ----------------------------------------------- | ---------------------------- |
126| [AuxiliaryPictureType](arkts-apis-image-e.md#auxiliarypicturetype13) | 操作成功,返回辅助图的类型。 |
127
128**示例:**
129
130```ts
131async function GetAuxiliaryPictureType(auxPictureObj : image.AuxiliaryPicture) {
132  if (auxPictureObj != null) {
133    let type: image.AuxiliaryPictureType = auxPictureObj.getType();
134    console.info('Success get auxiliary picture type ' +  JSON.stringify(type));
135  } else {
136    console.error('Failed get auxiliary picture type ');
137  }
138}
139```
140
141## setMetadata<sup>13+</sup>
142
143setMetadata(metadataType: MetadataType, metadata: Metadata): Promise\<void>
144
145设置辅助图元数据。
146
147**系统能力:** SystemCapability.Multimedia.Image.Core
148
149**参数:**
150
151| 参数名       | 类型                            | 必填 | 说明                                 |
152| ------------ | ------------------------------- | ---- | ------------------------------------ |
153| metadataType | [MetadataType](arkts-apis-image-e.md#metadatatype13) | 是   | 元数据的类型,用于设置对应的元数据。 |
154| metadata     | [Metadata](arkts-apis-image-Metadata.md)         | 是   | 元数据对象。                         |
155
156**返回值:**
157
158| 类型           | 说明                                   |
159| -------------- | -------------------------------------- |
160| Promise\<void> | Promise对象,无返回结果的Promise对象。 |
161
162**错误码:**
163
164以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
165
166| 错误码ID | 错误信息                                                     |
167| -------- | ------------------------------------------------------------ |
168| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
169| 7600202  | Unsupported metadata. Possible causes: 1. Unsupported metadata type. 2. The metadata type does not match the auxiliary picture type. |
170
171**示例:**
172
173```ts
174import { BusinessError } from '@kit.BasicServicesKit';
175
176async function SetAuxPictureObjMetadata(exifContext: Context, auxPictureObj: image.AuxiliaryPicture) {
177  const exifResourceMgr = exifContext.resourceManager;
178  const exifRawFile = await exifResourceMgr.getRawFileContent("exif.jpg");// 图片包含exif metadata。
179  let exifOps: image.SourceOptions = {
180    sourceDensity: 98,
181  }
182  let exifImageSource: image.ImageSource = image.createImageSource(exifRawFile.buffer as ArrayBuffer, exifOps);
183  let exifCommodityPixelMap: image.PixelMap = await exifImageSource.createPixelMap();
184  let exifPictureObj: image.Picture = image.createPicture(exifCommodityPixelMap);
185  if (exifPictureObj != null) {
186    console.info('Create picture succeeded');
187  } else {
188    console.error('Create picture failed');
189  }
190
191  if (auxPictureObj != null) {
192    let metadataType: image.MetadataType = image.MetadataType.EXIF_METADATA;
193    let exifMetaData: image.Metadata = await exifPictureObj.getMetadata(metadataType);
194    auxPictureObj.setMetadata(metadataType, exifMetaData).then(() => {
195      console.info('Set metadata success');
196    }).catch((error: BusinessError) => {
197      console.error(`Set metadata failed.error.code: ${error.code}, error.message: ${error.message}`);
198    });
199  } else {
200    console.error('AuxPictureObjMetaData is null');
201  }
202}
203```
204
205## getMetadata<sup>13+</sup>
206
207getMetadata(metadataType: MetadataType): Promise\<Metadata>
208
209从辅助图中获取元数据。
210
211**系统能力:** SystemCapability.Multimedia.Image.Core
212
213**参数:**
214
215| 参数名       | 类型                            | 必填 | 说明                                   |
216| ------------ | ------------------------------- | ---- | -------------------------------------- |
217| metadataType | [MetadataType](arkts-apis-image-e.md#metadatatype13) | 是   | 元数据类型,用于获取对应类型的元数据。 |
218
219**返回值:**
220
221| 类型                             | 说明             |
222| -------------------------------- | ---------------- |
223| Promise<[Metadata](arkts-apis-image-Metadata.md)> | 返回元数据对象。 |
224
225**错误码:**
226
227以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
228
229| 错误码ID | 错误信息                                                     |
230| -------- | ------------------------------------------------------------ |
231| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
232| 7600202  | Unsupported metadata. Possible causes: 1. Unsupported metadata type. 2. The metadata type does not match the auxiliary picture type. |
233
234**示例:**
235
236```ts
237async function GetAuxPictureObjMetadata(auxPictureObj: image.AuxiliaryPicture) {
238  if (auxPictureObj != null) {
239    let metadataType: image.MetadataType = image.MetadataType.EXIF_METADATA;
240    let auxPictureObjMetaData: image.Metadata | null = await auxPictureObj.getMetadata(metadataType);
241    if (auxPictureObjMetaData != null) {
242      console.info('Get AuxPictureObj Metadata success' );
243    } else {
244      console.error('Get AuxPictureObj Metadata failed');
245    }
246  } else {
247    console.error('Get AuxPictureObj is null.');
248  }
249}
250```
251
252## getAuxiliaryPictureinfo<sup>13+</sup>
253
254getAuxiliaryPictureInfo(): AuxiliaryPictureInfo
255
256获取有关此辅助图的图像信息。
257
258**系统能力:** SystemCapability.Multimedia.Image.Core
259
260**返回值:**
261
262| 类型                                            | 说明                              |
263| ----------------------------------------------- | --------------------------------- |
264| [AuxiliaryPictureInfo](arkts-apis-image-i.md#auxiliarypictureinfo13) | Promise对象,返回辅助图图像信息。 |
265
266**示例:**
267
268```ts
269async function GetAuxiliaryPictureInfo(auxPictureObj: image.AuxiliaryPicture) {
270  if(auxPictureObj != null) {
271    let auxinfo: image.AuxiliaryPictureInfo = auxPictureObj.getAuxiliaryPictureInfo();
272    console.info('GetAuxiliaryPictureInfo Type: ' + auxinfo.auxiliaryPictureType +
273      ' height: ' + auxinfo.size.height + ' width: ' + auxinfo.size.width +
274      ' rowStride: ' +  auxinfo.rowStride +  ' pixelFormat: ' + auxinfo.pixelFormat +
275      ' colorSpace: ' +  auxinfo.colorSpace);
276  } else {
277    console.error('Get auxiliary picture information failed');
278  }
279}
280```
281
282## setAuxiliaryPictureinfo<sup>13+</sup>
283
284setAuxiliaryPictureInfo(info: AuxiliaryPictureInfo): void
285
286设置辅助图的图像信息。
287
288**系统能力:** SystemCapability.Multimedia.Image.Core
289
290**参数:**
291
292| 参数名 | 类型                                            | 必填 | 说明               |
293| ------ | ----------------------------------------------- | ---- | ------------------ |
294| info   | [AuxiliaryPictureInfo](arkts-apis-image-i.md#auxiliarypictureinfo13) | 是   | 辅助图的图像信息。 |
295
296**错误码:**
297
298以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
299
300| 错误码ID | 错误信息                                                     |
301| -------- | :----------------------------------------------------------- |
302| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
303
304**示例:**
305
306```ts
307import { colorSpaceManager } from '@kit.ArkGraphics2D';
308
309async function SetAuxiliaryPictureInfo(auxPictureObj: image.AuxiliaryPicture) {
310  if(auxPictureObj != null) {
311    let colorSpaceName = colorSpaceManager.ColorSpace.SRGB;
312    let info: image.AuxiliaryPictureInfo = {
313      auxiliaryPictureType: image.AuxiliaryPictureType.GAINMAP,
314      size: {height: 100, width: 200},
315      pixelFormat: image.PixelMapFormat.RGBA_8888,
316      rowStride: 0,
317      colorSpace: colorSpaceManager.create(colorSpaceName),
318    };
319    auxPictureObj.setAuxiliaryPictureInfo(info);
320  }
321}
322```
323
324## release<sup>13+</sup>
325
326release():void
327
328释放辅助图对象,无返回值。
329
330**系统能力:** SystemCapability.Multimedia.Image.Core
331
332**示例:**
333
334```ts
335async function Release(auxPictureObj: image.AuxiliaryPicture) {
336  let funcName = "Release";
337  if (auxPictureObj != null) {
338    auxPictureObj.release();
339    if (auxPictureObj.getType() == null) {
340      console.info(funcName, 'Success !');
341    } else {
342      console.error(funcName, 'Failed !');
343    }
344  } else {
345    console.error('PictureObj is null');
346  }
347}
348```
349