• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.multimedia.image (图片处理)
2
3本模块提供图片处理效果,包括通过属性创建PixelMap、读取图像像素数据、读取区域内的图片数据等。
4
5> **说明:**
6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8## 导入模块
9
10```ts
11import image from '@ohos.multimedia.image';
12```
13
14## image.createPixelMap<sup>8+</sup>
15
16createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise\<PixelMap>
17
18通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,通过Promise返回结果。
19
20**系统能力:** SystemCapability.Multimedia.Image.Core
21
22**参数:**
23
24| 参数名  | 类型                                             | 必填 | 说明                                                             |
25| ------- | ------------------------------------------------ | ---- | ---------------------------------------------------------------- |
26| colors  | ArrayBuffer                                      | 是   | BGRA_8888格式的颜色数组。                                        |
27| options | [InitializationOptions](#initializationoptions8) | 是   | 创建像素的属性,包括透明度,尺寸,缩略值,像素格式和是否可编辑。 |
28
29**返回值:**
30
31| 类型                             | 说明                                                                    |
32| -------------------------------- | ----------------------------------------------------------------------- |
33| Promise\<[PixelMap](#pixelmap7)> | 返回Pixelmap。<br>当创建的pixelmap大小超过原图大小时,返回原图pixelmap大小。|
34
35
36**示例:**
37
38```ts
39import {BusinessError} from '@ohos.base'
40const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
41let bufferArr : Uint8Array = new Uint8Array(color);
42let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
43image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
44  console.log('Succeeded in creating pixelmap.');
45}).catch((error : BusinessError) => {
46  console.log('Failed to create pixelmap.');
47})
48```
49
50## image.createPixelMap<sup>8+</sup>
51
52createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback\<PixelMap>): void
53
54通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,通过回调函数返回结果。
55
56**系统能力:** SystemCapability.Multimedia.Image.Core
57
58**参数:**
59
60| 参数名   | 类型                                             | 必填 | 说明                       |
61| -------- | ------------------------------------------------ | ---- | -------------------------- |
62| colors   | ArrayBuffer                                      | 是   | BGRA_8888格式的颜色数组。  |
63| options  | [InitializationOptions](#initializationoptions8) | 是   | 属性。                     |
64| callback | AsyncCallback\<[PixelMap](#pixelmap7)>           | 是   | 通过回调返回PixelMap对象。 |
65
66**示例:**
67
68```ts
69import {BusinessError} from '@ohos.base'
70const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
71let bufferArr : Uint8Array = new Uint8Array(color);
72let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
73image.createPixelMap(color, opts, (error : BusinessError, pixelmap : image.PixelMap) => {
74    if(error) {
75        console.log('Failed to create pixelmap.');
76    } else {
77        console.log('Succeeded in creating pixelmap.');
78    }
79})
80```
81
82## PixelMap<sup>7+</sup>
83
84图像像素类,用于读取或写入图像数据以及获取图像信息。在调用PixelMap的方法前,需要先通过createPixelMap创建一个PixelMap实例。目前pixelmap序列化大小最大128MB,超过会送显失败。大小计算方式为(宽\*高\*每像素占用字节数)。
85
86### 属性
87
88**系统能力:** SystemCapability.Multimedia.Image.Core
89
90| 名称       | 类型    | 可读 | 可写 | 说明                       |
91| ---------- | ------- | ---- | ---- | -------------------------- |
92| isEditable | boolean | 是   | 否   | 设定是否图像像素可被编辑。 |
93
94### readPixelsToBuffer<sup>7+</sup>
95
96readPixelsToBuffer(dst: ArrayBuffer): Promise\<void>
97
98读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。指定BGRA_8888格式创建pixelmap,读取的像素数据与原数据保持一致。
99
100**系统能力:** SystemCapability.Multimedia.Image.Core
101
102**参数:**
103
104| 参数名 | 类型        | 必填 | 说明                                                                                                  |
105| ------ | ----------- | ---- | ----------------------------------------------------------------------------------------------------- |
106| dst    | ArrayBuffer | 是   | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。缓冲区大小由getPixelBytesNumber接口获取。 |
107
108**返回值:**
109
110| 类型           | 说明                                            |
111| -------------- | ----------------------------------------------- |
112| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 |
113
114**示例:**
115
116```ts
117import {BusinessError} from '@ohos.base'
118const readBuffer : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
119pixelmap.readPixelsToBuffer(readBuffer).then(() => {
120    console.log('Succeeded in reading image pixel data.');  //符合条件则进入
121}).catch((error : BusinessError) => {
122    console.log('Failed to read image pixel data.');  //不符合条件则进入
123})
124```
125
126### readPixelsToBuffer<sup>7+</sup>
127
128readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback\<void>): void
129
130读取图像像素数据,结果写入ArrayBuffer里,使用callback形式返回。指定BGRA_8888格式创建pixelmap,读取的像素数据与原数据保持一致。
131
132**系统能力:** SystemCapability.Multimedia.Image.Core
133
134**参数:**
135
136| 参数名   | 类型                 | 必填 | 说明                                                                                                  |
137| -------- | -------------------- | ---- | ----------------------------------------------------------------------------------------------------- |
138| dst      | ArrayBuffer          | 是   | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。缓冲区大小由getPixelBytesNumber接口获取。 |
139| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。                                                                        |
140
141**示例:**
142
143```ts
144import {BusinessError} from '@ohos.base'
145const readBuffer : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
146pixelmap.readPixelsToBuffer(readBuffer, (err : BusinessError, res : Object) => {
147    if(err) {
148        console.log('Failed to read image pixel data.');  //不符合条件则进入
149    } else {
150        console.log('Succeeded in reading image pixel data.');  //符合条件则进入
151    }
152})
153```
154
155### readPixels<sup>7+</sup>
156
157readPixels(area: PositionArea): Promise\<void>
158
159读取区域内的图片数据,使用Promise形式返回。
160
161**系统能力:** SystemCapability.Multimedia.Image.Core
162
163**参数:**
164
165| 参数名 | 类型                           | 必填 | 说明                     |
166| ------ | ------------------------------ | ---- | ------------------------ |
167| area   | [PositionArea](#positionarea7) | 是   | 区域大小,根据区域读取。 |
168
169**返回值:**
170
171| 类型           | 说明                                                |
172| :------------- | :-------------------------------------------------- |
173| Promise\<void> | Promise实例,用于获取读取结果,失败时返回错误信息。 |
174
175**示例:**
176
177```ts
178import {BusinessError} from '@ohos.base'
179const area : image.PositionArea = {
180    pixels: new ArrayBuffer(8),
181    offset: 0,
182    stride: 8,
183    region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
184}
185pixelmap.readPixels(area).then(() => {
186    console.log('Succeeded in reading the image data in the area.'); //符合条件则进入
187}).catch((error : BusinessError) => {
188    console.log('Failed to read the image data in the area.'); //不符合条件则进入
189})
190```
191
192### readPixels<sup>7+</sup>
193
194readPixels(area: PositionArea, callback: AsyncCallback\<void>): void
195
196读取区域内的图片数据,使用callback形式返回读取结果。
197
198**系统能力:** SystemCapability.Multimedia.Image.Core
199
200**参数:**
201
202| 参数名   | 类型                           | 必填 | 说明                           |
203| -------- | ------------------------------ | ---- | ------------------------------ |
204| area     | [PositionArea](#positionarea7) | 是   | 区域大小,根据区域读取。       |
205| callback | AsyncCallback\<void>           | 是   | 获取回调,失败时返回错误信息。 |
206
207**示例:**
208
209```ts
210import {BusinessError} from '@ohos.base'
211const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
212let bufferArr : Uint8Array = new Uint8Array(color);
213let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
214image.createPixelMap(color, opts, (err : BusinessError, pixelmap : image.PixelMap) => {
215    if(pixelmap == undefined){
216        console.info('createPixelMap failed.');
217    } else {
218        const area : image.PositionArea = { pixels: new ArrayBuffer(8),
219            offset: 0,
220            stride: 8,
221            region: { size: { height: 1, width: 2 }, x: 0, y: 0 }};
222        pixelmap.readPixels(area, (err : BusinessError) => {
223            if (err != undefined) {
224		   console.info('Failed to read pixelmap from the specified area.');
225	    } else {
226		   console.info('Succeeded to read pixelmap from the specified area.');
227	    }
228        })
229    }
230})
231```
232
233### writePixels<sup>7+</sup>
234
235writePixels(area: PositionArea): Promise\<void>
236
237将PixelMap写入指定区域内,使用Promise形式返回写入结果。
238
239**系统能力:** SystemCapability.Multimedia.Image.Core
240
241**参数:**
242
243| 参数名 | 类型                           | 必填 | 说明                 |
244| ------ | ------------------------------ | ---- | -------------------- |
245| area   | [PositionArea](#positionarea7) | 是   | 区域,根据区域写入。 |
246
247**返回值:**
248
249| 类型           | 说明                                                |
250| :------------- | :-------------------------------------------------- |
251| Promise\<void> | Promise实例,用于获取写入结果,失败时返回错误信息。 |
252
253**示例:**
254
255```ts
256import {BusinessError} from '@ohos.base'
257const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
258let bufferArr : Uint8Array = new Uint8Array(color);
259let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
260image.createPixelMap(color, opts)
261    .then( (pixelmap : image.PixelMap)  => {
262        if (pixelmap == undefined) {
263            console.info('createPixelMap failed.');
264        }
265        const area : image.PositionArea = { pixels: new ArrayBuffer(8),
266            offset: 0,
267            stride: 8,
268            region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
269        }
270        let bufferArr : Uint8Array = new Uint8Array(area.pixels);
271        for (let i = 0; i < bufferArr.length; i++) {
272            bufferArr[i] = i + 1;
273        }
274
275        pixelmap.writePixels(area).then(() => {
276		    console.info('Succeeded to write pixelmap into the specified area.');
277        })
278    }).catch((error : BusinessError) => {
279        console.log('error: ' + error);
280    })
281```
282
283### writePixels<sup>7+</sup>
284
285writePixels(area: PositionArea, callback: AsyncCallback\<void>): void
286
287将PixelMap写入指定区域内,使用callback形式返回写入结果。
288
289**系统能力:** SystemCapability.Multimedia.Image.Core
290
291**参数:**
292
293| 参数名    | 类型                           | 必填 | 说明                           |
294| --------- | ------------------------------ | ---- | ------------------------------ |
295| area      | [PositionArea](#positionarea7) | 是   | 区域,根据区域写入。           |
296| callback  | AsyncCallback\<void>           | 是   | 获取回调,失败时返回错误信息。 |
297
298**示例:**
299
300```ts
301import {BusinessError} from '@ohos.base'
302const area : image.PositionArea = { pixels: new ArrayBuffer(8),
303    offset: 0,
304    stride: 8,
305    region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
306}
307let bufferArr : Uint8Array = new Uint8Array(area.pixels);
308for (let i = 0; i < bufferArr.length; i++) {
309    bufferArr[i] = i + 1;
310}
311pixelmap.writePixels(area, (error : BusinessError) => {
312    if (error != undefined) {
313        console.info('Failed to write pixelmap into the specified area.');
314    } else {
315        console.info('Succeeded to write pixelmap into the specified area.');
316    }
317})
318```
319
320### writeBufferToPixels<sup>7+</sup>
321
322writeBufferToPixels(src: ArrayBuffer): Promise\<void>
323
324读取缓冲区中的图片数据,结果写入PixelMap中,使用Promise形式返回。
325
326**系统能力:** SystemCapability.Multimedia.Image.Core
327
328**参数:**
329
330| 参数名 | 类型        | 必填 | 说明           |
331| ------ | ----------- | ---- | -------------- |
332| src    | ArrayBuffer | 是   | 图像像素数据。 |
333
334**返回值:**
335
336| 类型           | 说明                                            |
337| -------------- | ----------------------------------------------- |
338| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 |
339
340**示例:**
341
342```ts
343import {BusinessError} from '@ohos.base'
344const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
345let bufferArr : Uint8Array = new Uint8Array(color);
346for (let i = 0; i < bufferArr.length; i++) {
347    bufferArr[i] = i + 1;
348}
349pixelmap.writeBufferToPixels(color).then(() => {
350    console.log("Succeeded in writing data from a buffer to a PixelMap.");
351}).catch((error : BusinessError) => {
352    console.error("Failed to write data from a buffer to a PixelMap.");
353})
354```
355
356### writeBufferToPixels<sup>7+</sup>
357
358writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback\<void>): void
359
360读取缓冲区中的图片数据,结果写入PixelMap中,使用callback形式返回。
361
362**系统能力:** SystemCapability.Multimedia.Image.Core
363
364**参数:**
365
366| 参数名   | 类型                 | 必填 | 说明                           |
367| -------- | -------------------- | ---- | ------------------------------ |
368| src      | ArrayBuffer          | 是   | 图像像素数据。                 |
369| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。 |
370
371**示例:**
372
373```ts
374import {BusinessError} from '@ohos.base'
375const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
376let bufferArr : Uint8Array = new Uint8Array(color);
377for (let i = 0; i < bufferArr.length; i++) {
378    bufferArr[i] = i + 1;
379}
380pixelmap.writeBufferToPixels(color, (err : BusinessError) => {
381    if (err != undefined) {
382        console.error("Failed to write data from a buffer to a PixelMap.");
383        return;
384    } else {
385		console.log("Succeeded in writing data from a buffer to a PixelMap.");
386	}
387});
388```
389
390### getImageInfo<sup>7+</sup>
391
392getImageInfo(): Promise\<ImageInfo>
393
394获取图像像素信息,使用Promise形式返回获取的图像像素信息。
395
396**系统能力:** SystemCapability.Multimedia.Image.Core
397
398**返回值:**
399
400| 类型                              | 说明                                                        |
401| --------------------------------- | ----------------------------------------------------------- |
402| Promise\<[ImageInfo](#imageinfo)> | Promise实例,用于异步获取图像像素信息,失败时返回错误信息。 |
403
404**示例:**
405
406```ts
407const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
408let opts : image.InitializationOptions = { editable: true, pixelFormat: 2, size: { height: 6, width: 8 } }
409image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
410    if (pixelmap == undefined) {
411        console.error("Failed to obtain the image pixel map information.");
412    }
413    pixelmap.getImageInfo().then((imageInfo : image.ImageInfo) => {
414        if (imageInfo == undefined) {
415            console.error("Failed to obtain the image pixel map information.");
416        }
417        if (imageInfo.size.height == 4 && imageInfo.size.width == 6) {
418            console.log("Succeeded in obtaining the image pixel map information.");
419        }
420    })
421})
422```
423
424### getImageInfo<sup>7+</sup>
425
426getImageInfo(callback: AsyncCallback\<ImageInfo>): void
427
428获取图像像素信息,使用callback形式返回获取的图像像素信息。
429
430**系统能力:** SystemCapability.Multimedia.Image.Core
431
432**参数:**
433
434| 参数名   | 类型                                    | 必填 | 说明                                                         |
435| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
436| callback | AsyncCallback\<[ImageInfo](#imageinfo)> | 是   | 获取图像像素信息回调,异步返回图像像素信息,失败时返回错误信息。 |
437
438**示例:**
439
440```ts
441import {BusinessError} from '@ohos.base'
442const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
443let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
444image.createPixelMap(color, opts, (err : BusinessError, pixelmap : image.PixelMap) => {
445    if (pixelmap == undefined) {
446        console.error("Failed to obtain the image pixel map information.");
447    }
448    pixelmap.getImageInfo((err : BusinessError, imageInfo : image.ImageInfo) => {
449        if (imageInfo == undefined) {
450            console.error("Failed to obtain the image pixel map information.");
451        }
452        if (imageInfo.size.height == 4 && imageInfo.size.width == 6) {
453            console.log("Succeeded in obtaining the image pixel map information.");
454        }
455    })
456})
457```
458
459### getBytesNumberPerRow<sup>7+</sup>
460
461getBytesNumberPerRow(): number
462
463获取图像像素每行字节数。
464
465**系统能力:** SystemCapability.Multimedia.Image.Core
466
467**返回值:**
468
469| 类型   | 说明                 |
470| ------ | -------------------- |
471| number | 图像像素的行字节数。 |
472
473**示例:**
474
475```ts
476import {BusinessError} from '@ohos.base'
477const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
478let bufferArr : Uint8Array = new Uint8Array(color);
479let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
480image.createPixelMap(color, opts, (err : BusinessError, pixelmap : image.PixelMap) => {
481    let rowCount : number = pixelmap.getBytesNumberPerRow();
482})
483```
484
485### getPixelBytesNumber<sup>7+</sup>
486
487getPixelBytesNumber(): number
488
489获取图像像素的总字节数。
490
491**系统能力:** SystemCapability.Multimedia.Image.Core
492
493**返回值:**
494
495| 类型   | 说明                 |
496| ------ | -------------------- |
497| number | 图像像素的总字节数。 |
498
499**示例:**
500
501```ts
502let pixelBytesNumber : number = pixelmap.getPixelBytesNumber();
503```
504
505### getDensity<sup>9+</sup>
506
507getDensity():number
508
509获取当前图像像素的密度。
510
511**系统能力:** SystemCapability.Multimedia.Image.Core
512
513**返回值:**
514
515| 类型   | 说明            |
516| ------ | --------------- |
517| number | 图像像素的密度。|
518
519**示例:**
520
521```ts
522let getDensity : number = pixelmap.getDensity();
523```
524
525### opacity<sup>9+</sup>
526
527opacity(rate: number, callback: AsyncCallback\<void>): void
528
529通过设置透明比率来让PixelMap达到对应的透明效果,使用callback形式返回。
530
531**系统能力:** SystemCapability.Multimedia.Image.Core
532
533**参数:**
534
535| 参数名   | 类型                 | 必填 | 说明                           |
536| -------- | -------------------- | ---- | ------------------------------ |
537| rate     | number               | 是   | 透明比率的值,取值范围:0-1。   |
538| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。 |
539
540**示例:**
541
542```ts
543import {BusinessError} from '@ohos.base'
544let rate = 0.5;
545pixelmap.opacity(rate, (err : BusinessError) => {
546	if (err) {
547        console.error("Failed to set opacity.");
548        return;
549    } else {
550        console.log("Succeeded in setting opacity.");
551	}
552})
553```
554
555### opacity<sup>9+</sup>
556
557opacity(rate: number): Promise\<void>
558
559通过设置透明比率来让PixelMap达到对应的透明效果,使用Promise形式返回。
560
561**系统能力:** SystemCapability.Multimedia.Image.Core
562
563**参数:**
564
565| 参数名 | 类型   | 必填 | 说明                        |
566| ------ | ------ | ---- | --------------------------- |
567| rate   | number | 是   | 透明比率的值,取值范围:0-1。|
568
569**返回值:**
570
571| 类型           | 说明                                            |
572| -------------- | ----------------------------------------------- |
573| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 |
574
575**示例:**
576
577```ts
578async function Demo() {
579    await pixelmap.opacity(0.5);
580}
581```
582
583### createAlphaPixelmap<sup>9+</sup>
584
585createAlphaPixelmap(): Promise\<PixelMap>
586
587根据Alpha通道的信息,来生成一个仅包含Alpha通道信息的pixelmap,可用于阴影效果,使用Promise形式返回。
588
589**系统能力:** SystemCapability.Multimedia.Image.Core
590
591**返回值:**
592
593| 类型                             | 说明                        |
594| -------------------------------- | --------------------------- |
595| Promise\<[PixelMap](#pixelmap7)> | Promise实例,返回pixelmap。 |
596
597**示例:**
598
599```ts
600async function Demo() {
601    await pixelmap.createAlphaPixelmap();
602}
603```
604
605### createAlphaPixelmap<sup>9+</sup>
606
607createAlphaPixelmap(callback: AsyncCallback\<PixelMap>): void
608
609根据Alpha通道的信息,来生成一个仅包含Alpha通道信息的pixelmap,可用于阴影效果,使用callback形式返回。
610
611**系统能力:** SystemCapability.Multimedia.Image.Core
612
613**参数:**
614
615| 参数名   | 类型                     | 必填 | 说明                     |
616| -------- | ------------------------ | ---- | ------------------------ |
617| callback | AsyncCallback\<PixelMap> | 是   | 获取回调,异步返回结果。 |
618
619**示例:**
620
621```ts
622import {BusinessError} from '@ohos.base'
623pixelmap.createAlphaPixelmap((err : BusinessError, alphaPixelMap : image.PixelMap) => {
624    if (alphaPixelMap == undefined) {
625        console.info('Failed to obtain new pixel map.');
626    } else {
627        console.info('Succeed in obtaining new pixel map.');
628    }
629})
630```
631
632### scale<sup>9+</sup>
633
634scale(x: number, y: number, callback: AsyncCallback\<void>): void
635
636根据输入的宽高对图片进行缩放,使用callback形式返回。
637
638**系统能力:** SystemCapability.Multimedia.Image.Core
639
640**参数:**
641
642| 参数名   | 类型                 | 必填 | 说明                            |
643| -------- | -------------------- | ---- | ------------------------------- |
644| x        | number               | 是   | 宽度的缩放值,其值为输入的倍数。|
645| y        | number               | 是   | 高度的缩放值,其值为输入的倍数。|
646| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。  |
647
648**示例:**
649
650```ts
651async function Demo() {
652	await pixelmap.scale(2.0, 1.0);
653}
654```
655
656### scale<sup>9+</sup>
657
658scale(x: number, y: number): Promise\<void>
659
660根据输入的宽高对图片进行缩放,使用Promise形式返回。
661
662**系统能力:** SystemCapability.Multimedia.Image.Core
663
664**参数:**
665
666| 参数名 | 类型   | 必填 | 说明                            |
667| ------ | ------ | ---- | ------------------------------- |
668| x      | number | 是   | 宽度的缩放值,其值为输入的倍数。|
669| y      | number | 是   | 高度的缩放值,其值为输入的倍数。|
670
671**返回值:**
672
673| 类型           | 说明                        |
674| -------------- | --------------------------- |
675| Promise\<void> | Promise实例,异步返回结果。 |
676
677**示例:**
678
679```ts
680async function Demo() {
681	await pixelmap.scale(2.0, 1.0);
682}
683```
684
685### translate<sup>9+</sup>
686
687translate(x: number, y: number, callback: AsyncCallback\<void>): void
688
689根据输入的坐标对图片进行位置变换,使用callback形式返回。
690
691**系统能力:** SystemCapability.Multimedia.Image.Core
692
693**参数:**
694
695| 参数名   | 类型                 | 必填 | 说明                          |
696| -------- | -------------------- | ---- | ----------------------------- |
697| x        | number               | 是   | 区域横坐标。                  |
698| y        | number               | 是   | 区域纵坐标。                  |
699| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。|
700
701**示例:**
702
703```ts
704async function Demo() {
705	await pixelmap.translate(3.0, 1.0);
706}
707```
708
709### translate<sup>9+</sup>
710
711translate(x: number, y: number): Promise\<void>
712
713根据输入的坐标对图片进行位置变换,使用Promise形式返回。
714
715**系统能力:** SystemCapability.Multimedia.Image.Core
716
717**参数:**
718
719| 参数名 | 类型   | 必填 | 说明        |
720| ------ | ------ | ---- | ----------- |
721| x      | number | 是   | 区域横坐标。|
722| y      | number | 是   | 区域纵坐标。|
723
724**返回值:**
725
726| 类型           | 说明                        |
727| -------------- | --------------------------- |
728| Promise\<void> | Promise实例,异步返回结果。 |
729
730**示例:**
731
732```ts
733async function Demo() {
734	await pixelmap.translate(3.0, 1.0);
735}
736```
737
738### rotate<sup>9+</sup>
739
740rotate(angle: number, callback: AsyncCallback\<void>): void
741
742根据输入的角度对图片进行旋转,使用callback形式返回。
743
744**系统能力:** SystemCapability.Multimedia.Image.Core
745
746**参数:**
747
748| 参数名   | 类型                 | 必填 | 说明                          |
749| -------- | -------------------- | ---- | ----------------------------- |
750| angle    | number               | 是   | 图片旋转的角度。              |
751| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。|
752
753**示例:**
754
755```ts
756import {BusinessError} from '@ohos.base'
757let angle = 90.0;
758pixelmap.rotate(angle, (err : BusinessError) => {
759    if (err != undefined) {
760        console.error("Failed to set rotation.");
761        return;
762    } else {
763        console.log("Succeeded in setting rotation.");
764	}
765})
766```
767
768### rotate<sup>9+</sup>
769
770rotate(angle: number): Promise\<void>
771
772根据输入的角度对图片进行旋转,使用Promise形式返回。
773
774**系统能力:** SystemCapability.Multimedia.Image.Core
775
776**参数:**
777
778| 参数名 | 类型   | 必填 | 说明                          |
779| ------ | ------ | ---- | ----------------------------- |
780| angle  | number | 是   | 图片旋转的角度。              |
781
782**返回值:**
783
784| 类型           | 说明                        |
785| -------------- | --------------------------- |
786| Promise\<void> | Promise实例,异步返回结果。 |
787
788**示例:**
789
790```ts
791async function Demo() {
792    await pixelmap.rotate(90.0);
793}
794```
795
796### flip<sup>9+</sup>
797
798flip(horizontal: boolean, vertical: boolean, callback: AsyncCallback\<void>): void
799
800根据输入的条件对图片进行翻转,使用callback形式返回。
801
802**系统能力:** SystemCapability.Multimedia.Image.Core
803
804**参数:**
805
806| 参数名     | 类型                 | 必填 | 说明                          |
807| ---------- | -------------------- | ---- | ----------------------------- |
808| horizontal | boolean              | 是   | 水平翻转。                    |
809| vertical   | boolean              | 是   | 垂直翻转。                    |
810| callback   | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。|
811
812**示例:**
813
814```ts
815async function Demo() {
816    await pixelmap.flip(false, true);
817}
818```
819
820### flip<sup>9+</sup>
821
822flip(horizontal: boolean, vertical: boolean): Promise\<void>
823
824根据输入的条件对图片进行翻转,使用Promise形式返回。
825
826**系统能力:** SystemCapability.Multimedia.Image.Core
827
828**参数:**
829
830| 参数名     | 类型    | 必填 | 说明      |
831| ---------- | ------- | ---- | --------- |
832| horizontal | boolean | 是   | 水平翻转。|
833| vertical   | boolean | 是   | 垂直翻转。|
834
835**返回值:**
836
837| 类型           | 说明                        |
838| -------------- | --------------------------- |
839| Promise\<void> | Promise实例,异步返回结果。 |
840
841**示例:**
842
843```ts
844async function Demo() {
845    await pixelmap.flip(false, true);
846}
847```
848
849### crop<sup>9+</sup>
850
851crop(region: Region, callback: AsyncCallback\<void>): void
852
853根据输入的尺寸对图片进行裁剪,使用callback形式返回。
854
855**系统能力:** SystemCapability.Multimedia.Image.Core
856
857**参数:**
858
859| 参数名   | 类型                 | 必填 | 说明                          |
860| -------- | -------------------- | ---- | ----------------------------- |
861| region   | [Region](#region7)   | 是   | 裁剪的尺寸。                  |
862| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。|
863
864**示例:**
865
866```ts
867async function Demo() {
868    await pixelmap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } } as image.Region);
869}
870```
871
872### crop<sup>9+</sup>
873
874crop(region: Region): Promise\<void>
875
876根据输入的尺寸对图片进行裁剪,使用Promise形式返回。
877
878**系统能力:** SystemCapability.Multimedia.Image.Core
879
880**参数:**
881
882| 参数名 | 类型               | 必填 | 说明        |
883| ------ | ------------------ | ---- | ----------- |
884| region | [Region](#region7) | 是   | 裁剪的尺寸。|
885
886**返回值:**
887
888| 类型           | 说明                        |
889| -------------- | --------------------------- |
890| Promise\<void> | Promise实例,异步返回结果。 |
891
892**示例:**
893
894```ts
895async function Demo() {
896    await pixelmap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } } as image.Region);
897}
898```
899
900### getColorSpace<sup>10+</sup>
901
902getColorSpace(): colorSpaceManager.ColorSpaceManager
903
904获取图像广色域信息。
905
906**系统能力:** SystemCapability.Multimedia.Image.Core
907
908**返回值:**
909
910| 类型                                | 说明             |
911| ----------------------------------- | ---------------- |
912| [colorSpaceManager.ColorSpaceManager](js-apis-colorSpaceManager.md#colorspacemanager) | 图像广色域信息。 |
913
914**错误码:**
915
916以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
917
918| 错误码ID | 错误信息 |
919| ------- | --------------------------------------------|
920| 62980101| If the image data abnormal              |
921| 62980103| If the image data unsupport              |
922| 62980115| If the image parameter invalid             |
923
924**示例:**
925
926```ts
927import colorSpaceManager from '@ohos.graphics.colorSpaceManager';
928async function Demo() {
929    let csm : Object = pixelmap.getColorSpace();
930}
931```
932
933### setColorSpace<sup>10+</sup>
934
935setColorSpace(colorSpace: colorSpaceManager.ColorSpaceManager): void
936
937设置图像广色域信息。
938
939**系统能力:** SystemCapability.Multimedia.Image.Core
940
941**参数:**
942
943| 参数名     | 类型                                | 必填 | 说明            |
944| ---------- | ----------------------------------- | ---- | --------------- |
945| colorSpace | [colorSpaceManager.ColorSpaceManager](js-apis-colorSpaceManager.md#colorspacemanager) | 是   | 图像广色域信息。|
946
947**错误码:**
948
949以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
950
951| 错误码ID | 错误信息 |
952| ------- | --------------------------------------------|
953| 62980111| If the operation invalid              |
954| 62980115| If the image parameter invalid             |
955
956**示例:**
957
958```ts
959import colorSpaceManager from '@ohos.graphics.colorSpaceManager';
960async function Demo() {
961    let colorSpaceName = colorSpaceManager.ColorSpace.SRGB;
962    let csm : colorSpaceManager.ColorSpaceManager = colorSpaceManager.create(colorSpaceName);
963    pixelmap.setColorSpace(csm);
964}
965```
966
967### marshalling<sup>10+</sup>
968
969marshalling(sequence: rpc.MessageSequence): void
970
971将PixelMap序列化后写入MessageSequence。
972
973**系统能力:** SystemCapability.Multimedia.Image.Core
974
975**参数:**
976
977| 参数名                 | 类型                                                  | 必填 | 说明                                     |
978| ---------------------- | ------------------------------------------------------ | ---- | ---------------------------------------- |
979| sequence               | [rpc.MessageSequence](js-apis-rpc.md#messagesequence9)  | 是   | 新创建的MessageSequence。                 |
980
981**错误码:**
982
983以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
984
985| 错误码ID | 错误信息 |
986| ------- | --------------------------------------------|
987| 62980115 | If the input parameter invalid              |
988| 62980097 | If the ipc error              |
989
990**示例:**
991
992```ts
993import image from '@ohos.multimedia.image'
994import rpc from '@ohos.rpc'
995class MySequence implements rpc.Parcelable {
996    pixel_map;
997    constructor(pixelmap : image.PixelMap) {
998        this.pixel_map = pixelmap;
999    }
1000    marshalling(messageSequence : rpc.MessageSequence) {
1001        this.pixel_map.marshalling(messageSequence);
1002        console.log('marshalling');
1003        return true;
1004    }
1005    unmarshalling(messageSequence : rpc.MessageSequence) {
1006      image.createPixelMap(new ArrayBuffer(96), {size: { height:4, width: 6}}).then((pixelParcel : image.PixelMap) => {
1007        pixelParcel.unmarshalling(messageSequence).then(async (pixelMap : image.PixelMap) => {
1008          this.pixel_map = pixelMap;
1009          await pixelMap.getImageInfo().then((imageInfo : image.ImageInfo) => {
1010            console.log("unmarshalling information h:" + imageInfo.size.height + "w:" + imageInfo.size.width);
1011          })
1012        })
1013      });
1014      return true;
1015    }
1016}
1017async function Demo() {
1018   const color : ArrayBuffer = new ArrayBuffer(96);
1019   let bufferArr : Uint8Array = new Uint8Array(color);
1020   for (let i = 0; i < bufferArr.length; i++) {
1021      bufferArr[i] = 0x80;
1022   }
1023   let opts : image.InitializationOptions = {
1024      editable: true,
1025      pixelFormat: 4,
1026      size: { height: 4, width: 6 },
1027      alphaType: 3
1028   }
1029   let pixelMap : image.PixelMap | undefined = undefined;
1030   await image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
1031      pixelMap = pixelmap;
1032   })
1033   if (pixelMap != undefined) {
1034     // 序列化
1035     let parcelable : MySequence = new MySequence(pixelMap);
1036     let data : rpc.MessageSequence = rpc.MessageSequence.create();
1037     data.writeParcelable(parcelable);
1038
1039
1040     // 反序列化 rpc获取到data
1041     let ret : MySequence = new MySequence(pixelMap);
1042     data.readParcelable(ret);
1043   }
1044}
1045```
1046
1047### unmarshalling<sup>10+</sup>
1048
1049unmarshalling(sequence: rpc.MessageSequence): Promise\<PixelMap>
1050
1051从MessageSequence中获取PixelMap。
1052
1053**系统能力:** SystemCapability.Multimedia.Image.Core
1054
1055**参数:**
1056
1057| 参数名                 | 类型                                                  | 必填 | 说明                                     |
1058| ---------------------- | ----------------------------------------------------- | ---- | ---------------------------------------- |
1059| sequence               | [rpc.MessageSequence](js-apis-rpc.md#messagesequence9) | 是   | 保存有PixelMap信息的MessageSequence。      |
1060
1061**返回值:**
1062
1063| 类型                             | 说明                  |
1064| -------------------------------- | --------------------- |
1065| Promise\<[PixelMap](#pixelmap7)> | 异步返回Promise对象。 |
1066
1067**错误码:**
1068
1069以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1070
1071| 错误码ID | 错误信息 |
1072| ------- | --------------------------------------------|
1073| 62980115 | If the input parameter invalid              |
1074| 62980097 | If the ipc error              |
1075| 62980096 | If fail to create async work            |
1076
1077**示例:**
1078
1079```ts
1080import image from '@ohos.multimedia.image'
1081import rpc from '@ohos.rpc'
1082class MySequence implements rpc.Parcelable {
1083    pixel_map;
1084    constructor(pixelmap : image.PixelMap) {
1085        this.pixel_map = pixelmap;
1086    }
1087    marshalling(messageSequence : rpc.MessageSequence) {
1088        this.pixel_map.marshalling(messageSequence);
1089        console.log('marshalling');
1090        return true;
1091    }
1092    unmarshalling(messageSequence : rpc.MessageSequence) {
1093      image.createPixelMap(new ArrayBuffer(96), {size: { height:4, width: 6}}).then((pixelParcel : image.PixelMap) => {
1094        pixelParcel.unmarshalling(messageSequence).then(async (pixelMap : image.PixelMap) => {
1095          this.pixel_map = pixelMap;
1096          await pixelMap.getImageInfo().then((imageInfo : image.ImageInfo) => {
1097            console.log("unmarshalling information h:" + imageInfo.size.height + "w:" + imageInfo.size.width);
1098          })
1099        })
1100      });
1101      return true;
1102    }
1103}
1104async function Demo() {
1105   const color : ArrayBuffer = new ArrayBuffer(96);
1106   let bufferArr : Uint8Array = new Uint8Array(color);
1107   for (let i = 0; i < bufferArr.length; i++) {
1108      bufferArr[i] = 0x80;
1109   }
1110   let opts : image.InitializationOptions = {
1111      editable: true,
1112      pixelFormat: 4,
1113      size: { height: 4, width: 6 },
1114      alphaType: 3
1115   }
1116   let pixelMap : image.PixelMap | undefined = undefined;
1117   await image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
1118      pixelMap = pixelmap;
1119   })
1120   if (pixelMap != undefined) {
1121     // 序列化
1122     let parcelable : MySequence = new MySequence(pixelMap);
1123     let data : rpc.MessageSequence = rpc.MessageSequence.create();
1124     data.writeParcelable(parcelable);
1125
1126
1127     // 反序列化 rpc获取到data
1128     let ret : MySequence = new MySequence(pixelMap);
1129     data.readParcelable(ret);
1130   }
1131}
1132```
1133
1134### release<sup>7+</sup>
1135
1136release():Promise\<void>
1137
1138释放PixelMap对象,使用Promise形式返回释放结果。
1139
1140**系统能力:** SystemCapability.Multimedia.Image.Core
1141
1142**返回值:**
1143
1144| 类型           | 说明                            |
1145| -------------- | ------------------------------- |
1146| Promise\<void> | Promise实例,异步返回释放结果。 |
1147
1148**示例:**
1149
1150```ts
1151import {BusinessError} from '@ohos.base'
1152pixelmap.release().then(() => {
1153	console.log('Succeeded in releasing pixelmap object.');
1154}).catch((error : BusinessError) => {
1155	console.log('Failed to release pixelmap object.');
1156})
1157```
1158
1159### release<sup>7+</sup>
1160
1161release(callback: AsyncCallback\<void>): void
1162
1163释放PixelMap对象,使用callback形式返回释放结果。
1164
1165**系统能力:** SystemCapability.Multimedia.Image.Core
1166
1167**参数:**
1168
1169| 参数名   | 类型                 | 必填 | 说明               |
1170| -------- | -------------------- | ---- | ------------------ |
1171| callback | AsyncCallback\<void> | 是   | 异步返回释放结果。 |
1172
1173**示例:**
1174
1175```ts
1176import {BusinessError} from '@ohos.base'
1177pixelmap.release((err : BusinessError) => {
1178    if (err != undefined) {
1179        console.log('Failed to release pixelmap object.');
1180    } else {
1181        console.log('Succeeded in releasing pixelmap object.');
1182    }
1183})
1184```
1185
1186## image.createImageSource
1187
1188createImageSource(uri: string): ImageSource
1189
1190通过传入的uri创建图片源实例。
1191
1192**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1193
1194**参数:**
1195
1196| 参数名 | 类型   | 必填 | 说明                               |
1197| ------ | ------ | ---- | ---------------------------------- |
1198| uri    | string | 是   | 图片路径,当前仅支持应用沙箱路径。</br>当前支持格式有:.jpg .png .gif .bmp .webp RAW [SVG<sup>10+</sup>](#svg标签说明)。 |
1199
1200**返回值:**
1201
1202| 类型                        | 说明                                         |
1203| --------------------------- | -------------------------------------------- |
1204| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
1205
1206**示例:**
1207
1208```ts
1209//Stage模型
1210const context : Context = getContext(this);
1211const path : string = context.cacheDir + "/test.jpg";
1212const imageSourceApi : image.ImageSource = image.createImageSource(path);
1213```
1214
1215```ts
1216//FA模型
1217import featureAbility from '@ohos.ability.featureAbility';
1218
1219const context : _Context = featureAbility.getContext();
1220const path : string = context.getCacheDir() + "/test.jpg";
1221const imageSourceApi : image.ImageSource = image.createImageSource(path);
1222```
1223
1224## image.createImageSource<sup>9+</sup>
1225
1226createImageSource(uri: string, options: SourceOptions): ImageSource
1227
1228通过传入的uri创建图片源实例。
1229
1230**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1231
1232**参数:**
1233
1234| 参数名  | 类型                            | 必填 | 说明                                |
1235| ------- | ------------------------------- | ---- | ----------------------------------- |
1236| uri     | string                          | 是   | 图片路径,当前仅支持应用沙箱路径。</br>当前支持格式有:.jpg .png .gif .bmp .webp RAW [SVG<sup>10+</sup>](#svg标签说明)。 |
1237| options | [SourceOptions](#sourceoptions9) | 是   | 图片属性,包括图片序号与默认属性值。|
1238
1239**返回值:**
1240
1241| 类型                        | 说明                                         |
1242| --------------------------- | -------------------------------------------- |
1243| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
1244
1245**示例:**
1246
1247```ts
1248let sourceOptions : image.SourceOptions = { sourceDensity: 120 };
1249let imageSource : image.ImageSource = image.createImageSource('test.png', sourceOptions);
1250```
1251
1252## image.createImageSource<sup>7+</sup>
1253
1254createImageSource(fd: number): ImageSource
1255
1256通过传入文件描述符来创建图片源实例。
1257
1258**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1259
1260**参数:**
1261
1262| 参数名 | 类型   | 必填 | 说明          |
1263| ------ | ------ | ---- | ------------- |
1264| fd     | number | 是   | 文件描述符fd。|
1265
1266**返回值:**
1267
1268| 类型                        | 说明                                         |
1269| --------------------------- | -------------------------------------------- |
1270| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
1271
1272**示例:**
1273
1274```ts
1275const imageSourceApi : image.ImageSource = image.createImageSource(0);
1276```
1277
1278## image.createImageSource<sup>9+</sup>
1279
1280createImageSource(fd: number, options: SourceOptions): ImageSource
1281
1282通过传入文件描述符来创建图片源实例。
1283
1284**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1285
1286**参数:**
1287
1288| 参数名  | 类型                            | 必填 | 说明                                |
1289| ------- | ------------------------------- | ---- | ----------------------------------- |
1290| fd      | number                          | 是   | 文件描述符fd。                      |
1291| options | [SourceOptions](#sourceoptions9) | 是   | 图片属性,包括图片序号与默认属性值。|
1292
1293**返回值:**
1294
1295| 类型                        | 说明                                         |
1296| --------------------------- | -------------------------------------------- |
1297| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
1298
1299**示例:**
1300
1301```ts
1302let sourceOptions : image.SourceOptions = { sourceDensity: 120 };
1303const imageSourceApi : image.ImageSource = image.createImageSource(0, sourceOptions);
1304```
1305
1306## image.createImageSource<sup>9+</sup>
1307
1308createImageSource(buf: ArrayBuffer): ImageSource
1309
1310通过缓冲区创建图片源实例。
1311
1312**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1313
1314**参数:**
1315
1316| 参数名 | 类型        | 必填 | 说明             |
1317| ------ | ----------- | ---- | ---------------- |
1318| buf    | ArrayBuffer | 是   | 图像缓冲区数组。 |
1319
1320**示例:**
1321
1322```ts
1323const buf : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
1324const imageSourceApi : image.ImageSource = image.createImageSource(buf);
1325```
1326
1327## image.createImageSource<sup>9+</sup>
1328
1329createImageSource(buf: ArrayBuffer, options: SourceOptions): ImageSource
1330
1331通过缓冲区创建图片源实例。
1332
1333**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1334
1335**参数:**
1336
1337| 参数名 | 类型                             | 必填 | 说明                                 |
1338| ------ | -------------------------------- | ---- | ------------------------------------ |
1339| buf    | ArrayBuffer                      | 是   | 图像缓冲区数组。                     |
1340| options | [SourceOptions](#sourceoptions9) | 是   | 图片属性,包括图片序号与默认属性值。 |
1341
1342**返回值:**
1343
1344| 类型                        | 说明                                         |
1345| --------------------------- | -------------------------------------------- |
1346| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
1347
1348**示例:**
1349
1350```ts
1351const data : ArrayBuffer= new ArrayBuffer(112);
1352const imageSourceApi : image.ImageSource = image.createImageSource(data);
1353```
1354
1355## image.CreateIncrementalSource<sup>9+</sup>
1356
1357CreateIncrementalSource(buf: ArrayBuffer): ImageSource
1358
1359通过缓冲区以增量的方式创建图片源实例。
1360
1361**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1362
1363**参数:**
1364
1365| 参数名  | 类型        | 必填 | 说明      |
1366| ------- | ------------| ---- | ----------|
1367| buf     | ArrayBuffer | 是   | 增量数据。|
1368
1369**返回值:**
1370
1371| 类型                        | 说明                              |
1372| --------------------------- | --------------------------------- |
1373| [ImageSource](#imagesource) | 返回图片源,失败时返回undefined。 |
1374
1375**示例:**
1376
1377```ts
1378const buf : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
1379const imageSourceIncrementalSApi : image.ImageSource = image.CreateIncrementalSource(buf);
1380```
1381
1382## image.CreateIncrementalSource<sup>9+</sup>
1383
1384CreateIncrementalSource(buf: ArrayBuffer, options?: SourceOptions): ImageSource
1385
1386通过缓冲区以增量的方式创建图片源实例。
1387
1388**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1389
1390**参数:**
1391
1392| 参数名  | 类型                            | 必填 | 说明                                 |
1393| ------- | ------------------------------- | ---- | ------------------------------------ |
1394| buf     | ArrayBuffer                     | 是   | 增量数据。                           |
1395| options | [SourceOptions](#sourceoptions9) | 否   | 图片属性,包括图片序号与默认属性值。 |
1396
1397**返回值:**
1398
1399| 类型                        | 说明                              |
1400| --------------------------- | --------------------------------- |
1401| [ImageSource](#imagesource) | 返回图片源,失败时返回undefined。 |
1402
1403**示例:**
1404
1405```ts
1406const buf : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
1407const imageSourceIncrementalSApi : image.ImageSource = image.CreateIncrementalSource(buf);
1408```
1409
1410## ImageSource
1411
1412图片源类,用于获取图片相关信息。在调用ImageSource的方法前,需要先通过createImageSource构建一个ImageSource实例。
1413
1414### 属性
1415
1416**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1417
1418| 名称             | 类型           | 可读 | 可写 | 说明                                                         |
1419| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ |
1420| supportedFormats | Array\<string> | 是   | 否   | 支持的图片格式,包括:png,jpeg,bmp,gif,webp,RAW。 |
1421
1422### getImageInfo
1423
1424getImageInfo(index: number, callback: AsyncCallback\<ImageInfo>): void
1425
1426获取指定序号的图片信息,使用callback形式返回图片信息。
1427
1428**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1429
1430**参数:**
1431
1432| 参数名   | 类型                                   | 必填 | 说明                                     |
1433| -------- | -------------------------------------- | ---- | ---------------------------------------- |
1434| index    | number                                 | 是   | 创建图片源时的序号。                     |
1435| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是   | 获取图片信息回调,异步返回图片信息对象。 |
1436
1437**示例:**
1438
1439```ts
1440import {BusinessError} from '@ohos.base'
1441imageSourceApi.getImageInfo(0,(error : BusinessError, imageInfo : image.ImageInfo) => {
1442    if(error) {
1443        console.log('getImageInfo failed.');
1444    } else {
1445        console.log('getImageInfo succeeded.');
1446    }
1447})
1448```
1449
1450### getImageInfo
1451
1452getImageInfo(callback: AsyncCallback\<ImageInfo>): void
1453
1454获取图片信息,使用callback形式返回图片信息。
1455
1456**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1457
1458**参数:**
1459
1460| 参数名   | 类型                                   | 必填 | 说明                                     |
1461| -------- | -------------------------------------- | ---- | ---------------------------------------- |
1462| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是   | 获取图片信息回调,异步返回图片信息对象。 |
1463
1464**示例:**
1465
1466```ts
1467import {BusinessError} from '@ohos.base'
1468imageSourceApi.getImageInfo((err : BusinessError, imageInfo : image.ImageInfo) => {
1469    console.log('Succeeded in obtaining the image information.');
1470})
1471```
1472
1473### getImageInfo
1474
1475getImageInfo(index?: number): Promise\<ImageInfo>
1476
1477获取图片信息,使用Promise形式返回图片信息。
1478
1479**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1480
1481**参数:**
1482
1483| 参数名| 类型   | 必填 | 说明                                  |
1484| ----- | ------ | ---- | ------------------------------------- |
1485| index | number | 否   | 创建图片源时的序号,不选择时默认为0。 |
1486
1487**返回值:**
1488
1489| 类型                             | 说明                   |
1490| -------------------------------- | ---------------------- |
1491| Promise<[ImageInfo](#imageinfo)> | 返回获取到的图片信息。 |
1492
1493**示例:**
1494
1495```ts
1496import {BusinessError} from '@ohos.base'
1497imageSourceApi.getImageInfo(0)
1498    .then((imageInfo : image.ImageInfo) => {
1499		console.log('Succeeded in obtaining the image information.');
1500	}).catch((error : BusinessError) => {
1501		console.log('Failed to obtain the image information.');
1502	})
1503```
1504
1505### getImageProperty<sup>7+</sup>
1506
1507getImageProperty(key:string, options?: GetImagePropertyOptions): Promise\<string>
1508
1509获取图片中给定索引处图像的指定属性键的值,用Promise形式返回结果,仅支持JPEG文件,且需要包含exif信息。
1510
1511**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1512
1513**参数:**
1514
1515| 参数名  | 类型                                                 | 必填 | 说明                                 |
1516| ------- | ---------------------------------------------------- | ---- | ------------------------------------ |
1517| key     | string                                               | 是   | 图片属性名。                         |
1518| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | 否   | 图片属性,包括图片序号与默认属性值。 |
1519
1520**返回值:**
1521
1522| 类型             | 说明                                                              |
1523| ---------------- | ----------------------------------------------------------------- |
1524| Promise\<string> | Promise实例,用于异步获取图片属性值,如获取失败则返回属性默认值。 |
1525
1526**示例:**
1527
1528```ts
1529imageSourceApi.getImageProperty("BitsPerSample")
1530    .then((data : string) => {
1531		console.log('Succeeded in getting the value of the specified attribute key of the image.');
1532	})
1533```
1534
1535### getImageProperty<sup>7+</sup>
1536
1537getImageProperty(key:string, callback: AsyncCallback\<string>): void
1538
1539获取图片中给定索引处图像的指定属性键的值,用callback形式返回结果,仅支持JPEG文件,且需要包含exif信息。
1540
1541**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1542
1543**参数:**
1544
1545| 参数名   | 类型                   | 必填 | 说明                                                         |
1546| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
1547| key      | string                 | 是   | 图片属性名。                                                 |
1548| callback | AsyncCallback\<string> | 是   | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 |
1549
1550**示例:**
1551
1552```ts
1553import {BusinessError} from '@ohos.base'
1554imageSourceApi.getImageProperty("BitsPerSample",(error : BusinessError, data : string) => {
1555    if(error) {
1556        console.log('Failed to get the value of the specified attribute key of the image.');
1557    } else {
1558        console.log('Succeeded in getting the value of the specified attribute key of the image.');
1559    }
1560})
1561```
1562
1563### getImageProperty<sup>7+</sup>
1564
1565getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback\<string>): void
1566
1567获取图片指定属性键的值,callback形式返回结果,仅支持JPEG文件,且需要包含exif信息。
1568
1569**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1570
1571**参数:**
1572
1573| 参数名   | 类型                                                 | 必填 | 说明                                                          |
1574| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------- |
1575| key      | string                                               | 是   | 图片属性名。                                                  |
1576| options  | [GetImagePropertyOptions](#getimagepropertyoptions7) | 是   | 图片属性,包括图片序号与默认属性值。                          |
1577| callback | AsyncCallback\<string>                               | 是   | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。|
1578
1579**示例:**
1580
1581```ts
1582import {BusinessError} from '@ohos.base'
1583let property : image.GetImagePropertyOptions = { index: 0, defaultValue: '9999' }
1584imageSourceApi.getImageProperty("BitsPerSample",property,(error : BusinessError, data : string) => {
1585    if(error) {
1586        console.log('Failed to get the value of the specified attribute key of the image.');
1587    } else {
1588        console.log('Succeeded in getting the value of the specified attribute key of the image.');
1589    }
1590})
1591```
1592
1593### modifyImageProperty<sup>9+</sup>
1594
1595modifyImageProperty(key: string, value: string): Promise\<void>
1596
1597通过指定的键修改图片属性的值,使用Promise形式返回结果,仅支持JPEG文件,且需要包含exif信息。
1598
1599**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1600
1601**参数:**
1602
1603| 参数名  | 类型   | 必填 | 说明         |
1604| ------- | ------ | ---- | ------------ |
1605| key     | string | 是   | 图片属性名。 |
1606| value   | string | 是   | 属性值。     |
1607
1608**返回值:**
1609
1610| 类型           | 说明                        |
1611| -------------- | --------------------------- |
1612| Promise\<void> | Promise实例,异步返回结果。 |
1613
1614**示例:**
1615
1616```ts
1617imageSourceApi.modifyImageProperty("ImageWidth", "120").then(() => {
1618    imageSourceApi.getImageProperty("ImageWidth").then( (w : string) => {
1619        console.info('w', w);
1620    })
1621})
1622```
1623
1624### modifyImageProperty<sup>9+</sup>
1625
1626modifyImageProperty(key: string, value: string, callback: AsyncCallback\<void>): void
1627
1628通过指定的键修改图片属性的值,callback形式返回结果,仅支持JPEG文件,且需要包含exif信息。
1629
1630**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1631
1632**参数:**
1633
1634| 参数名   | 类型                | 必填 | 说明                           |
1635| -------- | ------------------- | ---- | ------------------------------ |
1636| key      | string              | 是   | 图片属性名。                   |
1637| value    | string              | 是   | 属性值。                       |
1638| callback | AsyncCallback\<void> | 是   | 修改属性值,callback返回结果。 |
1639
1640**示例:**
1641
1642```ts
1643import {BusinessError} from '@ohos.base'
1644imageSourceApi.modifyImageProperty("ImageWidth", "120",(err : BusinessError) => {
1645    if (err != undefined) {
1646        console.info('modifyImageProperty Failed');
1647    } else {
1648        console.info('modifyImageProperty Succeeded');
1649    }
1650})
1651```
1652
1653### updateData<sup>9+</sup>
1654
1655updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number): Promise\<void>
1656
1657更新增量数据,使用Promise形式返回结果。
1658
1659**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1660
1661**参数:**
1662
1663| 参数名     | 类型        | 必填 | 说明         |
1664| ---------- | ----------- | ---- | ------------ |
1665| buf        | ArrayBuffer | 是   | 增量数据。   |
1666| isFinished | boolean     | 是   | 是否更新完。 |
1667| value      | number      | 是   | 偏移量。     |
1668| length     | number      | 是   | 数组长。     |
1669
1670**返回值:**
1671
1672| 类型           | 说明                       |
1673| -------------- | -------------------------- |
1674| Promise\<void> | Promise实例,异步返回结果。|
1675
1676**示例:**
1677
1678```ts
1679import {BusinessError} from '@ohos.base'
1680const array : ArrayBuffer = new ArrayBuffer(100);
1681imageSourceApi.updateData(array, false, 0, 10).then((data : Object) => {
1682    console.info('Succeeded in updating data.');
1683})
1684```
1685
1686
1687### updateData<sup>9+</sup>
1688
1689updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number, callback: AsyncCallback\<void>): void
1690
1691更新增量数据,callback形式返回结果。
1692
1693**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1694
1695**参数:**
1696
1697| 参数名     | 类型                | 必填 | 说明                 |
1698| ---------- | ------------------- | ---- | -------------------- |
1699| buf        | ArrayBuffer         | 是   | 增量数据。           |
1700| isFinished | boolean             | 是   | 是否更新完。         |
1701| value      | number              | 是   | 偏移量。             |
1702| length     | number              | 是   | 数组长。             |
1703| callback   | AsyncCallback\<void> | 是   | 回调表示成功或失败。 |
1704
1705**示例:**
1706
1707```ts
1708import {BusinessError} from '@ohos.base'
1709const array : ArrayBuffer = new ArrayBuffer(100);
1710imageSourceApi.updateData(array, false, 0, 10,(error : BusinessError, data : Object)=> {
1711    if(data !== undefined){
1712        console.info('Succeeded in updating data.');
1713    }
1714})
1715```
1716
1717### createPixelMap<sup>7+</sup>
1718
1719createPixelMap(options?: DecodingOptions): Promise\<PixelMap>
1720
1721通过图片解码参数创建PixelMap对象。
1722
1723**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1724
1725**参数:**
1726
1727| 参数名  | 类型                                 | 必填 | 说明       |
1728| ------- | ------------------------------------ | ---- | ---------- |
1729| options | [DecodingOptions](#decodingoptions7) | 否   | 解码参数。 |
1730
1731**返回值:**
1732
1733| 类型                             | 说明                  |
1734| -------------------------------- | --------------------- |
1735| Promise\<[PixelMap](#pixelmap7)> | 异步返回Promise对象。 |
1736
1737**示例:**
1738
1739```ts
1740import {BusinessError} from '@ohos.base'
1741imageSourceApi.createPixelMap().then((pixelmap : image.PixelMap) => {
1742    console.log('Succeeded in creating pixelmap object through image decoding parameters.');
1743}).catch((error : BusinessError) => {
1744    console.log('Failed to create pixelmap object through image decoding parameters.');
1745})
1746```
1747
1748### createPixelMap<sup>7+</sup>
1749
1750createPixelMap(callback: AsyncCallback\<PixelMap>): void
1751
1752通过默认参数创建PixelMap对象,使用callback形式返回结果。
1753
1754**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1755
1756**参数:**
1757
1758| 参数名     | 类型                                  | 必填 | 说明                       |
1759| -------- | ------------------------------------- | ---- | -------------------------- |
1760| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是   | 通过回调返回PixelMap对象。 |
1761
1762**示例:**
1763
1764```ts
1765import {BusinessError} from '@ohos.base'
1766imageSourceApi.createPixelMap((err : BusinessError, pixelmap : image.PixelMap) => {
1767    console.info('Succeeded in creating pixelmap object.');
1768})
1769```
1770
1771### createPixelMap<sup>7+</sup>
1772
1773createPixelMap(options: DecodingOptions, callback: AsyncCallback\<PixelMap>): void
1774
1775通过图片解码参数创建PixelMap对象。
1776
1777**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1778
1779**参数:**
1780
1781| 参数名   | 类型                                  | 必填 | 说明                       |
1782| -------- | ------------------------------------- | ---- | -------------------------- |
1783| options  | [DecodingOptions](#decodingoptions7)  | 是   | 解码参数。                 |
1784| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是   | 通过回调返回PixelMap对象。 |
1785
1786**示例:**
1787
1788```ts
1789import {BusinessError} from '@ohos.base'
1790let decodingOptions : image.DecodingOptions = {
1791    sampleSize: 1,
1792    editable: true,
1793    desiredSize: { width: 1, height: 2 },
1794    rotate: 10,
1795    desiredPixelFormat: 3,
1796    desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 },
1797    index: 0
1798};
1799imageSourceApi.createPixelMap(decodingOptions, (err : BusinessError, pixelmap : image.PixelMap) => {
1800    console.log('Succeeded in creating pixelmap object.');
1801})
1802```
1803
1804### createPixelMapList<sup>10+</sup>
1805
1806createPixelMapList(options?: DecodingOptions): Promise<Array\<PixelMap>>;
1807
1808通过图片解码参数创建PixelMap数组。
1809
1810**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1811
1812**参数:**
1813
1814| 参数名   | 类型                                  | 必填 | 说明                       |
1815| -------- | ------------------------------------- | ---- | -------------------------- |
1816| options  | [DecodingOptions](#decodingoptions7)  | 否   | 解码参数。                 |
1817
1818**返回值:**
1819
1820| 类型                             | 说明                  |
1821| -------------------------------- | --------------------- |
1822| Promise<Array<[PixelMap](#pixelmap7)>> | 异步返回PixeMap数组。 |
1823
1824**错误码:**
1825
1826以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1827
1828| 错误码ID | 错误信息 |
1829| ------- | --------------------------------------------|
1830| 62980096| If the operation failed              |
1831| 62980103| If the image data unsupport             |
1832| 62980110| If the image source data error              |
1833| 62980111| If the image source data incomplete            |
1834| 62980118| If the image plugin create failed             |
1835
1836**示例:**
1837
1838```ts
1839let decodeOpts : image.DecodingOptions = {
1840    sampleSize: 1,
1841    editable: true,
1842    desiredSize: { width: 198, height: 202 },
1843    rotate: 0,
1844    desiredPixelFormat: 3,
1845    index: 0,
1846};
1847let pixelmaplist : Array<image.PixelMap> = await imageSourceApi.createPixelMapList(decodeOpts);
1848```
1849
1850### createPixelMapList<sup>10+</sup>
1851
1852createPixelMapList(callback: AsyncCallback<Array\<PixelMap>>): void
1853
1854通过默认参数创建PixelMap数组,使用callback形式返回结果。
1855
1856**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1857
1858**参数:**
1859
1860| 参数名     | 类型                                  | 必填 | 说明                       |
1861| -------- | ------------------------------------- | ---- | -------------------------- |
1862| callback | AsyncCallback<Array<[PixelMap](#pixelmap7)>> | 是   | 通过回调返回PixelMap数组。 |
1863
1864**错误码:**
1865
1866以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1867
1868| 错误码ID | 错误信息 |
1869| ------- | --------------------------------------------|
1870| 62980096| If the operation failed              |
1871| 62980103| If the image data unsupport             |
1872| 62980110| If the image source data error              |
1873| 62980111| If the image source data incomplete            |
1874| 62980118| If the image plugin create failed             |
1875
1876**示例:**
1877
1878```ts
1879imageSourceApi.createPixelMapList( (pixelmaplist : Array<image.PixelMap>) => {
1880    console.info('Succeeded in creating pixelmaplist object.');
1881})
1882```
1883
1884### createPixelMapList<sup>10+</sup>
1885
1886createPixelMapList(options: DecodingOptions, callback: AsyncCallback<Array\<PixelMap>>): void;
1887
1888通过图片解码参数创建PixelMap数组,使用callback形式返回结果。
1889
1890**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1891
1892**参数:**
1893
1894| 参数名   | 类型                 | 必填 | 说明                               |
1895| -------- | -------------------- | ---- | ---------------------------------- |
1896| options | [DecodingOptions](#decodingoptions7) | 是 | 解码参数。 |
1897| callback | AsyncCallback<Array<[PixelMap](#pixelmap7)>> | 是   | 通过回调返回PixelMap数组。 |
1898
1899**错误码:**
1900
1901以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1902
1903| 错误码ID | 错误信息 |
1904| ------- | --------------------------------------------|
1905| 62980096| If the operation failed              |
1906| 62980103| If the image data unsupport             |
1907| 62980110| If the image source data error              |
1908| 62980111| If the image source data incomplete            |
1909| 62980118| If the image plugin create failed             |
1910
1911**示例:**
1912
1913```ts
1914import {BusinessError} from '@ohos.base'
1915let decodeOpts : image.DecodingOptions = {
1916    sampleSize: 1,
1917    editable: true,
1918    desiredSize: { width: 198, height: 202 },
1919    rotate: 0,
1920    desiredPixelFormat: 3,
1921    index: 0,
1922};
1923imageSourceApi.createPixelMapList(decodeOpts, (err : BusinessError, pixelmaplist : Array<image.PixelMap>) => {
1924    console.log('Succeeded in creating pixelmaplist object.');
1925})
1926```
1927
1928### getDelayTimeList<sup>10+</sup>
1929
1930getDelayTimeList(callback: AsyncCallback<Array\<number>>): void;
1931
1932获取图像延迟时间数组,使用callback形式返回结果。
1933
1934**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1935
1936**参数:**
1937
1938| 参数名   | 类型                 | 必填 | 说明                               |
1939| -------- | -------------------- | ---- | ---------------------------------- |
1940| callback | AsyncCallback<Array\<number>> | 是   | 通过回调返回延迟时间数组。 |
1941
1942**错误码:**
1943
1944以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1945
1946| 错误码ID | 错误信息 |
1947| ------- | --------------------------------------------|
1948| 62980096| If the operation failed              |
1949| 62980110| If the image source data error              |
1950| 62980111| If the image source data incomplete            |
1951| 62980113| If the image format unknown            |
1952| 62980116| If the image decode failed            |
1953| 62980118| If the image plugin create failed             |
1954| 62980122| If the image decode head abnormal             |
1955
1956**示例:**
1957
1958```ts
1959import {BusinessError} from '@ohos.base'
1960imageSourceApi.getDelayTimeList((err : BusinessError, delayTimes : Array<number>) => {
1961    console.log('Succeeded in getting delay time.');
1962});
1963```
1964
1965### getDelayTimeList<sup>10+</sup>
1966
1967getDelayTimeList(): Promise<Array\<number>>;
1968
1969获取图像延迟时间数组,使用Promise形式返回结果。
1970
1971**系统能力:** SystemCapability.Multimedia.Image.ImageSource
1972
1973**返回值:**
1974
1975| 类型           | 说明                        |
1976| -------------- | --------------------------- |
1977| Promise<Array\<number>> | Promise实例,异步返回延迟时间数组。 |
1978
1979**错误码:**
1980
1981以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
1982
1983| 错误码ID | 错误信息 |
1984| ------- | --------------------------------------------|
1985| 62980096| If the operation failed              |
1986| 62980110| If the image source data error              |
1987| 62980111| If the image source data incomplete            |
1988| 62980113| If the image format unknown            |
1989| 62980116| If the image decode failed            |
1990| 62980118| If the image plugin create failed             |
1991| 62980122| If the image decode head abnormal             |
1992
1993**示例:**
1994
1995```ts
1996let delayTimes : Array<number> = await imageSourceApi.getDelayTimeList();
1997```
1998
1999### getFrameCount<sup>10+</sup>
2000
2001getFrameCount(callback: AsyncCallback\<number>): void;
2002
2003获取图像帧数,使用callback形式返回结果。
2004
2005**系统能力:** SystemCapability.Multimedia.Image.ImageSource
2006
2007**参数:**
2008
2009| 参数名   | 类型                 | 必填 | 说明                               |
2010| -------- | -------------------- | ---- | ---------------------------------- |
2011| callback | AsyncCallback\<number> | 是   | 通过回调返回图像帧数。 |
2012
2013**错误码:**
2014
2015以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
2016
2017| 错误码ID | 错误信息 |
2018| ------- | --------------------------------------------|
2019| 62980096| If the operation failed              |
2020| 62980110| If the image source data error              |
2021| 62980111| If the image source data incomplete            |
2022| 62980113| If the image format unknown            |
2023| 62980116| If the image decode failed            |
2024| 62980118| If the image plugin create failed             |
2025| 62980122| If the image decode head abnormal             |
2026
2027**示例:**
2028
2029```ts
2030import {BusinessError} from '@ohos.base'
2031imageSourceApi.getFrameCount((err : BusinessError, frameCount : number) => {
2032    console.log('Succeeded in getting frame count.');
2033});
2034```
2035
2036### getFrameCount<sup>10+</sup>
2037
2038getFrameCount(): Promise\<number>;
2039
2040获取图像帧数,使用Promise形式返回结果。
2041
2042**系统能力:** SystemCapability.Multimedia.Image.ImageSource
2043
2044**返回值:**
2045
2046| 类型           | 说明                        |
2047| -------------- | --------------------------- |
2048| Promise\<number> | Promise实例,异步返回图像帧数。 |
2049
2050**错误码:**
2051
2052以下错误码的详细介绍请参见[Image错误码](../errorcodes/errorcode-image.md)。
2053
2054| 错误码ID | 错误信息 |
2055| ------- | --------------------------------------------|
2056| 62980096| If the operation failed              |
2057| 62980110| If the image source data error              |
2058| 62980111| If the image source data incomplete            |
2059| 62980113| If the image format unknown            |
2060| 62980116| If the image decode failed            |
2061| 62980118| If the image plugin create failed             |
2062| 62980122| If the image decode head abnormal             |
2063
2064**示例:**
2065
2066```ts
2067let frameCount : number = await imageSourceApi.getFrameCount();
2068```
2069
2070### release
2071
2072release(callback: AsyncCallback\<void>): void
2073
2074释放图片源实例,使用callback形式返回结果。
2075
2076**系统能力:** SystemCapability.Multimedia.Image.ImageSource
2077
2078**参数:**
2079
2080| 参数名   | 类型                 | 必填 | 说明                               |
2081| -------- | -------------------- | ---- | ---------------------------------- |
2082| callback | AsyncCallback\<void> | 是   | 资源释放回调,失败时返回错误信息。 |
2083
2084**示例:**
2085
2086```ts
2087import {BusinessError} from '@ohos.base'
2088imageSourceApi.release((err : BusinessError) => {
2089    if (err != undefined) {
2090        console.log('Failed to release the image source instance.');
2091    } else {
2092        console.log('Succeeded in releasing the image source instance.');
2093    }
2094})
2095```
2096
2097### release
2098
2099release(): Promise\<void>
2100
2101释放图片源实例,使用Promise形式返回结果。
2102
2103**系统能力:** SystemCapability.Multimedia.Image.ImageSource
2104
2105**返回值:**
2106
2107| 类型           | 说明                        |
2108| -------------- | --------------------------- |
2109| Promise\<void> | Promise实例,异步返回结果。 |
2110
2111**示例:**
2112
2113```ts
2114import {BusinessError} from '@ohos.base'
2115imageSourceApi.release().then(()=>{
2116    console.log('Succeeded in releasing the image source instance.');
2117}).catch((error : BusinessError) => {
2118    console.log('Failed to release the image source instance.');
2119})
2120```
2121
2122## image.createImagePacker
2123
2124createImagePacker(): ImagePacker
2125
2126创建ImagePacker实例。
2127
2128**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2129
2130**返回值:**
2131
2132| 类型                        | 说明                  |
2133| --------------------------- | --------------------- |
2134| [ImagePacker](#imagepacker) | 返回ImagePacker实例。 |
2135
2136**示例:**
2137
2138```ts
2139const imagePackerApi : image.ImagePacker = image.createImagePacker();
2140```
2141
2142## ImagePacker
2143
2144图片打包器类,用于图片压缩和打包。在调用ImagePacker的方法前,需要先通过createImagePacker构建一个ImagePacker实例,当前支持格式有:jpeg webp png。
2145
2146### 属性
2147
2148**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2149
2150| 名称             | 类型           | 可读 | 可写 | 说明                       |
2151| ---------------- | -------------- | ---- | ---- | -------------------------- |
2152| supportedFormats | Array\<string> | 是   | 否   | 图片打包支持的格式 jpeg webp png。 |
2153
2154### packing
2155
2156packing(source: ImageSource, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void
2157
2158图片压缩或重新打包,使用callback形式返回结果。
2159
2160**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2161
2162**参数:**
2163
2164| 参数名   | 类型                               | 必填 | 说明                               |
2165| -------- | ---------------------------------- | ---- | ---------------------------------- |
2166| source   | [ImageSource](#imagesource)        | 是   | 打包的图片源。                     |
2167| option   | [PackingOption](#packingoption)    | 是   | 设置打包参数。                      |
2168| callback | AsyncCallback\<ArrayBuffer>        | 是   | 获取图片打包回调,返回打包后数据。 |
2169
2170**示例:**
2171
2172```ts
2173import {BusinessError} from '@ohos.base'
2174const imageSourceApi : image.ImageSource = image.createImageSource(0);
2175let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 };
2176imagePackerApi.packing(imageSourceApi, packOpts, (err : BusinessError, data : ArrayBuffer) => {})
2177```
2178
2179### packing
2180
2181packing(source: ImageSource, option: PackingOption): Promise\<ArrayBuffer>
2182
2183图片压缩或重新打包,使用Promise形式返回结果。
2184
2185**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2186
2187**参数:**
2188
2189| 参数名 | 类型                            | 必填 | 说明           |
2190| ------ | ------------------------------- | ---- | -------------- |
2191| source | [ImageSource](#imagesource)     | 是   | 打包的图片源。 |
2192| option | [PackingOption](#packingoption) | 是   | 设置打包参数。 |
2193
2194**返回值:**
2195
2196| 类型                         | 说明                                          |
2197| ---------------------------- | --------------------------------------------- |
2198| Promise\<ArrayBuffer>        | Promise实例,用于异步获取压缩或打包后的数据。 |
2199
2200**示例:**
2201
2202```ts
2203import {BusinessError} from '@ohos.base'
2204const imageSourceApi : image.ImageSource = image.createImageSource(0);
2205let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 }
2206imagePackerApi.packing(imageSourceApi, packOpts)
2207    .then( (data : ArrayBuffer) => {
2208        console.log('packing succeeded.');
2209	}).catch((error : BusinessError) => {
2210	    console.log('packing failed.');
2211	})
2212```
2213
2214### packing<sup>8+</sup>
2215
2216packing(source: PixelMap, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void
2217
2218图片压缩或重新打包,使用callback形式返回结果。
2219
2220**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2221
2222**参数:**
2223
2224| 参数名   | 类型                            | 必填 | 说明                               |
2225| -------- | ------------------------------- | ---- | ---------------------------------- |
2226| source   | [PixelMap](#pixelmap)           | 是   | 打包的PixelMap资源。               |
2227| option   | [PackingOption](#packingoption) | 是   | 设置打包参数。                     |
2228| callback | AsyncCallback\<ArrayBuffer>     | 是   | 获取图片打包回调,返回打包后数据。 |
2229
2230**示例:**
2231
2232```ts
2233import {BusinessError} from '@ohos.base'
2234const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
2235let bufferArr : Uint8Array = new Uint8Array(color);
2236let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
2237image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
2238    let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 }
2239    imagePackerApi.packing(pixelmap, packOpts, (err : BusinessError, data : ArrayBuffer) => {
2240        console.log('Succeeded in packing the image.');
2241    })
2242})
2243```
2244
2245### packing<sup>8+</sup>
2246
2247packing(source: PixelMap, option: PackingOption): Promise\<ArrayBuffer>
2248
2249图片压缩或重新打包,使用Promise形式返回结果。
2250
2251**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2252
2253**参数:**
2254
2255| 参数名 | 类型                            | 必填 | 说明               |
2256| ------ | ------------------------------- | ---- | ------------------ |
2257| source | [PixelMap](#pixelmap)           | 是   | 打包的PixelMap源。 |
2258| option | [PackingOption](#packingoption) | 是   | 设置打包参数。     |
2259
2260**返回值:**
2261
2262| 类型                  | 说明                                         |
2263| --------------------- | -------------------------------------------- |
2264| Promise\<ArrayBuffer> | Promise实例,用于异步获取压缩或打包后的数据。|
2265
2266**示例:**
2267
2268```ts
2269import {BusinessError} from '@ohos.base'
2270const color : ArrayBuffer = new ArrayBuffer(96);  //96为需要创建的像素buffer大小,取值为:height * width *4
2271let bufferArr : Uint8Array = new Uint8Array(color);
2272let opts : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
2273image.createPixelMap(color, opts).then((pixelmap : image.PixelMap) => {
2274    let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 }
2275    imagePackerApi.packing(pixelmap, packOpts)
2276        .then( (data : ArrayBuffer) => {
2277            console.log('Succeeded in packing the image.');
2278        }).catch((error : BusinessError) => {
2279            console.log('Failed to pack the image..');
2280        })
2281})
2282```
2283
2284### release
2285
2286release(callback: AsyncCallback\<void>): void
2287
2288释放图片打包实例,使用callback形式返回结果。
2289
2290**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2291
2292**参数:**
2293
2294| 参数名   | 类型                 | 必填 | 说明                           |
2295| -------- | -------------------- | ---- | ------------------------------ |
2296| callback | AsyncCallback\<void> | 是   | 释放回调,失败时返回错误信息。 |
2297
2298**示例:**
2299
2300```ts
2301import {BusinessError} from '@ohos.base'
2302imagePackerApi.release((err : BusinessError)=>{
2303    if (err != undefined) {
2304        console.log('Failed to release image packaging.');
2305    } else {
2306        console.log('Succeeded in releasing image packaging.');
2307    }
2308})
2309```
2310
2311### release
2312
2313release(): Promise\<void>
2314
2315释放图片打包实例,使用Promise形式返回释放结果。
2316
2317**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
2318
2319**返回值:**
2320
2321| 类型           | 说明                                                   |
2322| -------------- | ------------------------------------------------------ |
2323| Promise\<void> | Promise实例,用于异步获取释放结果,失败时返回错误信息。|
2324
2325**示例:**
2326
2327```ts
2328import {BusinessError} from '@ohos.base'
2329imagePackerApi.release().then(()=>{
2330    console.log('Succeeded in releasing image packaging.');
2331}).catch((error : BusinessError)=>{
2332    console.log('Failed to release image packaging.');
2333})
2334```
2335
2336## image.createImageReceiver<sup>9+</sup>
2337
2338createImageReceiver(width: number, height: number, format: number, capacity: number): ImageReceiver
2339
2340通过宽、高、图片格式、容量创建ImageReceiver实例。
2341
2342**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2343
2344**参数:**
2345
2346| 参数名   | 类型   | 必填 | 说明                   |
2347| -------- | ------ | ---- | ---------------------- |
2348| width    | number | 是   | 图像的默认宽度。       |
2349| height   | number | 是   | 图像的默认高度。       |
2350| format   | number | 是   | 图像格式,取值为[ImageFormat](#imageformat9)常量(目前仅支持 ImageFormat:JPEG 和 4)。  |
2351| capacity | number | 是   | 同时访问的最大图像数。 |
2352
2353**返回值:**
2354
2355| 类型                             | 说明                                    |
2356| -------------------------------- | --------------------------------------- |
2357| [ImageReceiver](#imagereceiver9) | 如果操作成功,则返回ImageReceiver实例。 |
2358
2359**示例:**
2360
2361```ts
2362let receiver : image.ImageReceiver = image.createImageReceiver(8192, 8, 2000, 8);
2363```
2364
2365## ImageReceiver<sup>9+</sup>
2366
2367图像接收类,用于获取组件surface id,接收最新的图片和读取下一张图片,以及释放ImageReceiver实例。
2368
2369在调用以下方法前需要先创建ImageReceiver实例。
2370
2371### 属性
2372
2373**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2374
2375| 名称     | 类型                         | 可读 | 可写 | 说明               |
2376| -------- | ---------------------------- | ---- | ---- | ------------------ |
2377| size     | [Size](#size)                | 是   | 否   | 图片大小。         |
2378| capacity | number                       | 是   | 否   | 同时访问的图像数。 |
2379| format   | [ImageFormat](#imageformat9) | 是   | 否   | 图像格式。         |
2380
2381### getReceivingSurfaceId<sup>9+</sup>
2382
2383getReceivingSurfaceId(callback: AsyncCallback\<string>): void
2384
2385用于获取一个surface id供Camera或其他组件使用。使用callback返回结果。
2386
2387**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2388
2389**参数:**
2390
2391| 参数名   | 类型                   | 必填 | 说明                       |
2392| -------- | ---------------------- | ---- | -------------------------- |
2393| callback | AsyncCallback\<string> | 是   | 回调函数,返回surface id。 |
2394
2395**示例:**
2396
2397```ts
2398import {BusinessError} from '@ohos.base'
2399receiver.getReceivingSurfaceId((err : BusinessError, id : string) => {
2400    if(err) {
2401        console.log('getReceivingSurfaceId failed.');
2402    } else {
2403        console.log('getReceivingSurfaceId succeeded.');
2404    }
2405});
2406```
2407
2408### getReceivingSurfaceId<sup>9+</sup>
2409
2410getReceivingSurfaceId(): Promise\<string>
2411
2412用于获取一个surface id供Camera或其他组件使用。使用promise返回结果。
2413
2414**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2415
2416**返回值:**
2417
2418| 类型             | 说明                 |
2419| ---------------- | -------------------- |
2420| Promise\<string> | 异步返回surface id。 |
2421
2422**示例:**
2423
2424```ts
2425import {BusinessError} from '@ohos.base'
2426receiver.getReceivingSurfaceId().then( (id : string) => {
2427    console.log('getReceivingSurfaceId succeeded.');
2428}).catch((error : BusinessError) => {
2429    console.log('getReceivingSurfaceId failed.');
2430})
2431```
2432
2433### readLatestImage<sup>9+</sup>
2434
2435readLatestImage(callback: AsyncCallback\<Image>): void
2436
2437从ImageReceiver读取最新的图片,并使用callback返回结果。
2438
2439**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2440
2441**参数:**
2442
2443| 参数名     | 类型                            | 必填 | 说明                     |
2444| -------- | ------------------------------- | ---- | ------------------------ |
2445| callback | AsyncCallback<[Image](#image9)> | 是   | 回调函数,返回最新图像。 |
2446
2447**示例:**
2448
2449```ts
2450import {BusinessError} from '@ohos.base'
2451receiver.readLatestImage((err : BusinessError, img : image.Image) => {
2452    if(err) {
2453        console.log('readLatestImage failed.');
2454    } else {
2455        console.log('readLatestImage succeeded.');
2456    }
2457});
2458```
2459
2460### readLatestImage<sup>9+</sup>
2461
2462readLatestImage(): Promise\<Image>
2463
2464从ImageReceiver读取最新的图片,并使用promise返回结果。
2465
2466**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2467
2468**返回值:**
2469
2470| 类型                      | 说明               |
2471| ------------------------- | ------------------ |
2472| Promise<[Image](#image9)> | 异步返回最新图片。 |
2473
2474**示例:**
2475
2476```ts
2477import {BusinessError} from '@ohos.base'
2478receiver.readLatestImage().then((img : image.Image) => {
2479    console.log('readLatestImage succeeded.');
2480}).catch((error : BusinessError) => {
2481    console.log('readLatestImage failed.');
2482})
2483```
2484
2485### readNextImage<sup>9+</sup>
2486
2487readNextImage(callback: AsyncCallback\<Image>): void
2488
2489从ImageReceiver读取下一张图片,并使用callback返回结果。
2490
2491**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2492
2493**参数:**
2494
2495| 参数名   | 类型                            | 必填 | 说明                       |
2496| -------- | ------------------------------- | ---- | -------------------------- |
2497| callback | AsyncCallback<[Image](#image9)> | 是   | 回调函数,返回下一张图片。 |
2498
2499**示例:**
2500
2501```ts
2502import {BusinessError} from '@ohos.base'
2503receiver.readNextImage((err : BusinessError, img : image.Image) => {
2504    if(err) {
2505        console.log('readNextImage failed.');
2506    } else {
2507        console.log('readNextImage succeeded.');
2508    }
2509});
2510```
2511
2512### readNextImage<sup>9+</sup>
2513
2514readNextImage(): Promise\<Image>
2515
2516从ImageReceiver读取下一张图片,并使用promise返回结果。
2517
2518**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2519
2520**返回值:**
2521
2522| 类型                      | 说明                 |
2523| ------------------------- | -------------------- |
2524| Promise<[Image](#image9)> | 异步返回下一张图片。 |
2525
2526**示例:**
2527
2528```ts
2529import {BusinessError} from '@ohos.base'
2530receiver.readNextImage().then((img : image.Image) => {
2531    console.log('readNextImage succeeded.');
2532}).catch((error : BusinessError) => {
2533    console.log('readNextImage failed.');
2534})
2535```
2536
2537### on<sup>9+</sup>
2538
2539on(type: 'imageArrival', callback: AsyncCallback\<void>): void
2540
2541接收图片时注册回调。
2542
2543**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2544
2545**参数:**
2546
2547| 参数名   | 类型                 | 必填 | 说明                                                   |
2548| -------- | -------------------- | ---- | ------------------------------------------------------ |
2549| type     | string               | 是   | 注册事件的类型,固定为'imageArrival',接收图片时触发。 |
2550| callback | AsyncCallback\<void> | 是   | 注册的事件回调。                                       |
2551
2552**示例:**
2553
2554```ts
2555receiver.on('imageArrival', () => {})
2556```
2557
2558### release<sup>9+</sup>
2559
2560release(callback: AsyncCallback\<void>): void
2561
2562释放ImageReceiver实例并使用回调返回结果。
2563
2564**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2565
2566**参数:**
2567
2568| 参数名   | 类型                 | 必填 | 说明                     |
2569| -------- | -------------------- | ---- | ------------------------ |
2570| callback | AsyncCallback\<void> | 是   | 回调函数,返回操作结果。 |
2571
2572**示例:**
2573
2574```ts
2575import {BusinessError} from '@ohos.base'
2576receiver.release((err : BusinessError) => {})
2577```
2578
2579### release<sup>9+</sup>
2580
2581release(): Promise\<void>
2582
2583释放ImageReceiver实例并使用promise返回结果。
2584
2585**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
2586
2587**返回值:**
2588
2589| 类型           | 说明               |
2590| -------------- | ------------------ |
2591| Promise\<void> | 异步返回操作结果。 |
2592
2593**示例:**
2594
2595```ts
2596import {BusinessError} from '@ohos.base'
2597receiver.release().then(() => {
2598    console.log('release succeeded.');
2599}).catch((error : BusinessError) => {
2600    console.log('release failed.');
2601})
2602```
2603
2604## image.createImageCreator<sup>9+</sup>
2605
2606createImageCreator(width: number, height: number, format: number, capacity: number): ImageCreator
2607
2608通过宽、高、图片格式、容量创建ImageCreator实例。
2609
2610**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2611
2612**参数:**
2613
2614| 参数名   | 类型   | 必填 | 说明                   |
2615| -------- | ------ | ---- | ---------------------- |
2616| width    | number | 是   | 图像的默认宽度。       |
2617| height   | number | 是   | 图像的默认高度。       |
2618| format   | number | 是   | 图像格式,如YCBCR_422_SP,JPEG。             |
2619| capacity | number | 是   | 同时访问的最大图像数。 |
2620
2621**返回值:**
2622
2623| 类型                           | 说明                                    |
2624| ------------------------------ | --------------------------------------- |
2625| [ImageCreator](#imagecreator9) | 如果操作成功,则返回ImageCreator实例。 |
2626
2627**示例:**
2628
2629```ts
2630let creator : image.ImageCreator = image.createImageCreator(8192, 8, 4, 8);
2631```
2632
2633## ImageCreator<sup>9+</sup>
2634
2635图像创建模块,用于请求图像原生数据区域,并开放给应用编译原生图像数据的能力。
2636在调用以下方法前需要先创建ImageCreator实例,ImageCreator不支持多线程。
2637
2638### 属性
2639
2640**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2641
2642| 名称     | 类型                         | 可读 | 可写 | 说明               |
2643| -------- | ---------------------------- | ---- | ---- | ------------------ |
2644| capacity | number                       | 是   | 否   | 同时访问的图像数。 |
2645| format   | [ImageFormat](#imageformat9) | 是   | 否   | 图像格式。         |
2646
2647### dequeueImage<sup>9+</sup>
2648
2649dequeueImage(callback: AsyncCallback\<Image>): void
2650
2651从空闲队列中获取buffer图片,用于绘制UI内容,并使用callback返回结果。
2652
2653**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2654
2655**参数:**
2656
2657| 参数名        | 类型                                    | 必填 | 说明                 |
2658| ------------- | ---------------------------------------| ---- | -------------------- |
2659| callback      | AsyncCallback\<Image>                   | 是   | 回调函数,返回最新图片。 |
2660
2661**示例:**
2662
2663```ts
2664import {BusinessError} from '@ohos.base'
2665creator.dequeueImage((err : BusinessError, img : image.Image) => {
2666    if (err) {
2667        console.info('dequeueImage failed.');
2668    }
2669    console.info('dequeueImage succeeded.');
2670});
2671```
2672
2673### dequeueImage<sup>9+</sup>
2674
2675dequeueImage(): Promise\<Image>
2676
2677从空闲队列中获取buffer图片,用于绘制UI内容,并使用promise返回结果。
2678
2679**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2680
2681**返回值:**
2682
2683| 类型             | 说明           |
2684| --------------- | ------------- |
2685| Promise\<Image> | 返回绘制的图像。 |
2686
2687**示例:**
2688
2689```ts
2690import {BusinessError} from '@ohos.base'
2691creator.dequeueImage().then((img : image.Image) => {
2692    console.info('dequeueImage succeeded.');
2693}).catch((error : BusinessError) => {
2694    console.log('dequeueImage failed: ' + error);
2695})
2696```
2697
2698### queueImage<sup>9+</sup>
2699
2700queueImage(interface: Image, callback: AsyncCallback\<void>): void
2701
2702将绘制好的图片放入Dirty队列,并使用callback返回结果。
2703
2704**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2705
2706**参数:**
2707
2708| 参数名        | 类型                     | 必填 | 说明                 |
2709| ------------- | -------------------------| ---- | -------------------- |
2710| interface     | Image                    | 是   | 绘制好的buffer图像。 |
2711| callback      | AsyncCallback\<void>     | 是   | 获取回调,失败时返回错误信息。 |
2712
2713**示例:**
2714
2715```ts
2716import {BusinessError} from '@ohos.base'
2717creator.dequeueImage().then((img : image.Image) => {
2718    //绘制图片
2719    img.getComponent(4).then( (component : image.Component) => {
2720        let bufferArr : Uint8Array = new Uint8Array(component.byteBuffer);
2721        for (let i = 0; i < bufferArr.length; i += 4) {
2722            bufferArr[i] = 0; //B
2723            bufferArr[i + 1] = 0; //G
2724            bufferArr[i + 2] = 255; //R
2725            bufferArr[i + 3] = 255; //A
2726        }
2727    })
2728    creator.queueImage(img, (err : BusinessError) => {
2729        if (err) {
2730            console.info('queueImage failed: ' + err);
2731        }
2732        console.info('queueImage succeeded');
2733    })
2734})
2735
2736```
2737
2738### queueImage<sup>9+</sup>
2739
2740queueImage(interface: Image): Promise\<void>
2741
2742将绘制好的图片放入Dirty队列,并使用promise返回结果。
2743
2744**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2745
2746**参数:**
2747
2748| 参数名          | 类型     | 必填 | 说明                |
2749| ------------- | --------| ---- | ------------------- |
2750| interface     | Image   | 是   | 绘制好的buffer图像。 |
2751
2752**返回值:**
2753
2754| 类型            | 说明           |
2755| -------------- | ------------- |
2756| Promise\<void> | 获取回调,失败时返回错误信息。 |
2757
2758**示例:**
2759
2760```ts
2761import {BusinessError} from '@ohos.base'
2762creator.dequeueImage().then((img : image.Image) => {
2763    //绘制图片
2764    img.getComponent(4).then((component : image.Component) => {
2765        let bufferArr : Uint8Array = new Uint8Array(component.byteBuffer);
2766        for (let i = 0; i < bufferArr.length; i += 4) {
2767            bufferArr[i] = 0; //B
2768            bufferArr[i + 1] = 0; //G
2769            bufferArr[i + 2] = 255; //R
2770            bufferArr[i + 3] = 255; //A
2771        }
2772    })
2773    creator.queueImage(img).then(() => {
2774        console.info('queueImage succeeded.');
2775    }).catch((error : BusinessError) => {
2776        console.info('queueImage failed: ' + error);
2777    })
2778})
2779
2780```
2781
2782### on<sup>9+</sup>
2783
2784on(type: 'imageRelease', callback: AsyncCallback\<void>): void
2785
2786监听imageRelease事件,并使用callback返回结果。
2787
2788**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2789
2790**参数:**
2791
2792| 参数名        | 类型                     | 必填 | 说明                 |
2793| ------------- | -------------------------| ---- | -------------------- |
2794| type          | string                   | 是   | 监听事件类型,如'imageRelease'。 |
2795| callback      | AsyncCallback\<void>     | 是   | 获取回调,失败时返回错误信息。 |
2796
2797**示例:**
2798
2799```ts
2800import {BusinessError} from '@ohos.base'
2801creator.on('imageRelease', (err : BusinessError) => {
2802    if (err) {
2803        console.info('on faild' + err);
2804    }
2805    console.info('on succeeded');
2806})
2807```
2808
2809### release<sup>9+</sup>
2810
2811release(callback: AsyncCallback\<void>): void
2812
2813释放当前图像,并使用callback返回结果。
2814
2815**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2816
2817**参数:**
2818
2819| 参数名           | 类型                     | 必填 | 说明                 |
2820| ------------- | -------------------------| ---- | -------------------- |
2821| callback      | AsyncCallback\<void>     | 是   | 获取回调,失败时返回错误信息。 |
2822
2823**示例:**
2824
2825```ts
2826import {BusinessError} from '@ohos.base'
2827creator.release((err : BusinessError) => {
2828    if (err) {
2829        console.info('release failed: ' + err);
2830    }
2831    console.info('release succeeded');
2832});
2833```
2834### release<sup>9+</sup>
2835
2836release(): Promise\<void>
2837
2838释放当前图像,并使用promise返回结果。
2839
2840**系统能力:** SystemCapability.Multimedia.Image.ImageCreator
2841
2842**返回值:**
2843
2844| 类型            | 说明           |
2845| -------------- | ------------- |
2846| Promise\<void> | 获取回调,失败时返回错误信息。 |
2847
2848**示例:**
2849
2850```ts
2851import {BusinessError} from '@ohos.base'
2852creator.release().then(() => {
2853    console.info('release succeeded');
2854}).catch((error : BusinessError) => {
2855    console.info('release failed');
2856})
2857```
2858
2859## Image<sup>9+</sup>
2860
2861提供基本的图像操作,包括获取图像信息、读写图像数据。调用[readNextImage](#readnextimage9)和[readLatestImage](#readlatestimage9)接口时会返回image。
2862
2863### 属性
2864
2865**系统能力:** SystemCapability.Multimedia.Image.Core
2866
2867| 名称     | 类型               | 可读 | 可写 | 说明                                               |
2868| -------- | ------------------ | ---- | ---- | -------------------------------------------------- |
2869| clipRect | [Region](#region7) | 是   | 是   | 要裁剪的图像区域。                                 |
2870| size     | [Size](#size)      | 是   | 否   | 图像大小。                                         |
2871| format   | number             | 是   | 否   | 图像格式,参考[PixelMapFormat](#pixelmapformat7)。 |
2872
2873### getComponent<sup>9+</sup>
2874
2875getComponent(componentType: ComponentType, callback: AsyncCallback\<Component>): void
2876
2877根据图像的组件类型从图像中获取组件缓存并使用callback返回结果。
2878
2879**系统能力:** SystemCapability.Multimedia.Image.Core
2880
2881**参数:**
2882
2883| 参数名        | 类型                                    | 必填 | 说明                 |
2884| ------------- | --------------------------------------- | ---- | -------------------- |
2885| componentType | [ComponentType](#componenttype9)        | 是   | 图像的组件类型。     |
2886| callback      | AsyncCallback<[Component](#component9)> | 是   | 用于返回组件缓冲区。 |
2887
2888**示例:**
2889
2890```ts
2891import {BusinessError} from '@ohos.base'
2892img.getComponent(4, (err : BusinessError, component : image.Component) => {
2893    if(err) {
2894        console.log('getComponent failed.');
2895    } else {
2896        console.log('getComponent succeeded.');
2897    }
2898})
2899```
2900
2901### getComponent<sup>9+</sup>
2902
2903getComponent(componentType: ComponentType): Promise\<Component>
2904
2905根据图像的组件类型从图像中获取组件缓存并使用Promise方式返回结果。
2906
2907**系统能力:** SystemCapability.Multimedia.Image.Core
2908
2909**参数:**
2910
2911| 参数名        | 类型                             | 必填 | 说明             |
2912| ------------- | -------------------------------- | ---- | ---------------- |
2913| componentType | [ComponentType](#componenttype9) | 是   | 图像的组件类型。 |
2914
2915**返回值:**
2916
2917| 类型                              | 说明                              |
2918| --------------------------------- | --------------------------------- |
2919| Promise<[Component](#component9)> | 用于返回组件缓冲区的promise实例。 |
2920
2921**示例:**
2922
2923```ts
2924img.getComponent(4).then((component : image.Component) => { })
2925```
2926
2927### release<sup>9+</sup>
2928
2929release(callback: AsyncCallback\<void>): void
2930
2931释放当前图像并使用callback返回结果。
2932
2933在接收另一个图像前必须先释放对应资源。
2934
2935**系统能力:** SystemCapability.Multimedia.Image.Core
2936
2937**参数:**
2938
2939| 参数名   | 类型                 | 必填 | 说明           |
2940| -------- | -------------------- | ---- | -------------- |
2941| callback | AsyncCallback\<void> | 是   | 返回操作结果。 |
2942
2943**示例:**
2944
2945```ts
2946import {BusinessError} from '@ohos.base'
2947img.release((err : BusinessError) =>{
2948    if (err != undefined) {
2949        console.log('Failed to release the image source instance.');
2950    } else {
2951        console.log('Succeeded in releasing the image source instance.');
2952    }
2953})
2954```
2955
2956### release<sup>9+</sup>
2957
2958release(): Promise\<void>
2959
2960释放当前图像并使用Promise方式返回结果。
2961
2962在接收另一个图像前必须先释放对应资源。
2963
2964**系统能力:** SystemCapability.Multimedia.Image.Core
2965
2966**返回值:**
2967
2968| 类型           | 说明                  |
2969| -------------- | --------------------- |
2970| Promise\<void> | promise返回操作结果。 |
2971
2972**示例:**
2973
2974```ts
2975import {BusinessError} from '@ohos.base'
2976img.release().then(() =>{
2977    console.log('release succeeded.');
2978}).catch((error : BusinessError) => {
2979    console.log('release failed.');
2980})
2981```
2982
2983## PositionArea<sup>7+</sup>
2984
2985表示图片指定区域内的数据。
2986
2987**系统能力:** SystemCapability.Multimedia.Image.Core
2988
2989| 名称   | 类型               | 可读 | 可写 | 说明                                                         |
2990| ------ | ------------------ | ---- | ---- | ------------------------------------------------------------ |
2991| pixels | ArrayBuffer        | 是   | 否   | 像素。                                                       |
2992| offset | number             | 是   | 否   | 偏移量。                                                     |
2993| stride | number             | 是   | 否   | 像素间距,stride >= region.size.width*4。                   |
2994| region | [Region](#region7) | 是   | 否   | 区域,按照区域读写。写入的区域宽度加X坐标不能大于原图的宽度,写入的区域高度加Y坐标不能大于原图的高度。 |
2995
2996## ImageInfo
2997
2998表示图片信息。
2999
3000**系统能力:** SystemCapability.Multimedia.Image.Core
3001
3002| 名称 | 类型          | 可读 | 可写 | 说明       |
3003| ---- | ------------- | ---- | ---- | ---------- |
3004| size | [Size](#size) | 是   | 是   | 图片大小。 |
3005| density<sup>9+</sup> | number | 是   | 是   | 像素密度,单位为ppi。 |
3006
3007## Size
3008
3009表示图片尺寸。
3010
3011**系统能力:** SystemCapability.Multimedia.Image.Core
3012
3013| 名称   | 类型   | 可读 | 可写 | 说明           |
3014| ------ | ------ | ---- | ---- | -------------- |
3015| height | number | 是   | 是   | 输出图片的高。 |
3016| width  | number | 是   | 是   | 输出图片的宽。 |
3017
3018## PixelMapFormat<sup>7+</sup>
3019
3020枚举,图片像素格式。
3021
3022**系统能力:** SystemCapability.Multimedia.Image.Core
3023
3024| 名称                   |   值   | 说明              |
3025| ---------------------- | ------ | ----------------- |
3026| UNKNOWN                | 0      | 未知格式。        |
3027| RGB_565                | 2      | 格式为RGB_565     |
3028| RGBA_8888              | 3      | 格式为RGBA_8888 |
3029| BGRA_8888<sup>9+</sup> | 4      | 格式为BGRA_8888 |
3030| RGB_888<sup>9+</sup>   | 5      | 格式为RGB_888   |
3031| ALPHA_8<sup>9+</sup>   | 6      | 格式为ALPHA_8   |
3032| RGBA_F16<sup>9+</sup>  | 7      | 格式为RGBA_F16  |
3033| NV21<sup>9+</sup>      | 8      | 格式为NV21      |
3034| NV12<sup>9+</sup>      | 9      | 格式为NV12      |
3035
3036## AlphaType<sup>9+</sup>
3037
3038枚举,图像的透明度类型。
3039
3040**系统能力:** SystemCapability.Multimedia.Image.Core
3041
3042| 名称     |   值   | 说明                    |
3043| -------- | ------ | ----------------------- |
3044| UNKNOWN  | 0      | 未知透明度。            |
3045| OPAQUE   | 1      | 没有alpha或图片全透明。 |
3046| PREMUL   | 2      | RGB前乘alpha。         |
3047| UNPREMUL | 3      | RGB不前乘alpha。       |
3048
3049## ScaleMode<sup>9+</sup>
3050
3051枚举,图像的缩放模式。
3052
3053**系统能力:** SystemCapability.Multimedia.Image.Core
3054
3055| 名称            |   值   | 说明                                               |
3056| --------------- | ------ | -------------------------------------------------- |
3057| CENTER_CROP     | 1      | 缩放图像以填充目标图像区域并居中裁剪区域外的效果。 |
3058| FIT_TARGET_SIZE | 0      | 图像适合目标尺寸的效果。                           |
3059
3060## SourceOptions<sup>9+</sup>
3061
3062ImageSource的初始化选项。
3063
3064**系统能力:** SystemCapability.Multimedia.Image.Core
3065
3066| 名称              | 类型                               | 可读 | 可写 | 说明               |
3067| ----------------- | ---------------------------------- | ---- | ---- | ------------------ |
3068| sourceDensity     | number                             | 是   | 是   | ImageSource的密度。|
3069| sourcePixelFormat | [PixelMapFormat](#pixelmapformat7) | 是   | 是   | 图片像素格式。     |
3070| sourceSize        | [Size](#size)                      | 是   | 是   | 图像像素大小。     |
3071
3072
3073## InitializationOptions<sup>8+</sup>
3074
3075PixelMap的初始化选项。
3076
3077**系统能力:** SystemCapability.Multimedia.Image.Core
3078
3079| 名称                     | 类型                               | 可读 | 可写 | 说明           |
3080| ------------------------ | ---------------------------------- | ---- | ---- | -------------- |
3081| alphaType<sup>9+</sup>   | [AlphaType](#alphatype9)           | 是   | 是   | 透明度。       |
3082| editable                 | boolean                            | 是   | 是   | 是否可编辑。   |
3083| pixelFormat              | [PixelMapFormat](#pixelmapformat7) | 是   | 是   | 像素格式。     |
3084| scaleMode<sup>9+</sup>   | [ScaleMode](#scalemode9)           | 是   | 是   | 缩略值。       |
3085| size                     | [Size](#size)                      | 是   | 是   | 创建图片大小。 |
3086
3087## DecodingOptions<sup>7+</sup>
3088
3089图像解码设置选项。
3090
3091**系统能力:** SystemCapability.Multimedia.Image.ImageSource
3092
3093| 名称               | 类型                               | 可读 | 可写 | 说明             |
3094| ------------------ | ---------------------------------- | ---- | ---- | ---------------- |
3095| sampleSize         | number                             | 是   | 是   | 缩略图采样大小,当前只能取1。 |
3096| rotate             | number                             | 是   | 是   | 旋转角度。       |
3097| editable           | boolean                            | 是   | 是   | 是否可编辑。当取值为false时,图片不可二次编辑,如crop等操作将失败。  |
3098| desiredSize        | [Size](#size)                      | 是   | 是   | 期望输出大小。   |
3099| desiredRegion      | [Region](#region7)                 | 是   | 是   | 解码区域。       |
3100| desiredPixelFormat | [PixelMapFormat](#pixelmapformat7) | 是   | 是   | 解码的像素格式。 |
3101| index              | number                             | 是   | 是   | 解码图片序号。   |
3102| fitDensity<sup>9+</sup> | number                        | 是   | 是   | 图像像素密度,单位为ppi。   |
3103
3104## Region<sup>7+</sup>
3105
3106表示区域信息。
3107
3108**系统能力:** SystemCapability.Multimedia.Image.Core
3109
3110| 名称 | 类型          | 可读 | 可写 | 说明         |
3111| ---- | ------------- | ---- | ---- | ------------ |
3112| size | [Size](#size) | 是   | 是   | 区域大小。   |
3113| x    | number        | 是   | 是   | 区域横坐标。 |
3114| y    | number        | 是   | 是   | 区域纵坐标。 |
3115
3116## PackingOption
3117
3118表示图片打包选项。
3119
3120**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
3121
3122| 名称    | 类型   | 可读 | 可写 | 说明                                                |
3123| ------- | ------ | ---- | ---- | --------------------------------------------------- |
3124| format  | string | 是   | 是   | 目标格式。</br>当前只支持jpg、webp 和 png。 |
3125| quality | number | 是   | 是   | JPEG编码中设定输出图片质量的参数,取值范围为1-100。 |
3126| bufferSize<sup>9+</sup> | number | 是   | 是   | 用于设置图片大小,默认为10M。 |
3127
3128## GetImagePropertyOptions<sup>7+</sup>
3129
3130表示查询图片属性的索引。
3131
3132**系统能力:** SystemCapability.Multimedia.Image.ImageSource
3133
3134| 名称         | 类型   | 可读 | 可写 | 说明         |
3135| ------------ | ------ | ---- | ---- | ------------ |
3136| index        | number | 是   | 是   | 图片序号。   |
3137| defaultValue | string | 是   | 是   | 默认属性值。 |
3138
3139## PropertyKey<sup>7+</sup>
3140
3141枚举,Exif(Exchangeable image file format)图片信息。
3142
3143**系统能力:** SystemCapability.Multimedia.Image.Core
3144
3145| 名称              |   值                    | 说明                     |
3146| ----------------- | ----------------------- | ------------------------ |
3147| BITS_PER_SAMPLE   | "BitsPerSample"         | 每个像素比特数。         |
3148| ORIENTATION       | "Orientation"           | 图片方向。               |
3149| IMAGE_LENGTH      | "ImageLength"           | 图片长度。               |
3150| IMAGE_WIDTH       | "ImageWidth"            | 图片宽度。               |
3151| GPS_LATITUDE      | "GPSLatitude"           | 图片纬度。               |
3152| GPS_LONGITUDE     | "GPSLongitude"          | 图片经度。               |
3153| GPS_LATITUDE_REF  | "GPSLatitudeRef"        | 纬度引用,例如N或S。    |
3154| GPS_LONGITUDE_REF | "GPSLongitudeRef"       | 经度引用,例如W或E。    |
3155| DATE_TIME_ORIGINAL<sup>9+</sup> | "DateTimeOriginal" | 拍摄时间,例如2022:09:06 15:48:00。当前为只读属性。     |
3156| EXPOSURE_TIME<sup>9+</sup>      | "ExposureTime"     | 曝光时间,例如1/33 sec。当前为只读属性。 |
3157| SCENE_TYPE<sup>9+</sup>         | "SceneType"        | 拍摄场景模式,例如人像、风光、运动、夜景等。当前为只读属性。      |
3158| ISO_SPEED_RATINGS<sup>9+</sup>  | "ISOSpeedRatings"  | ISO感光度,例如400。当前为只读属性。      |
3159| F_NUMBER<sup>9+</sup>           | "FNumber"          | 光圈值,例如f/1.8。当前为只读属性。      |
3160| DATE_TIME<sup>10+</sup>                  | "DateTime"             | 日期时间,当前为只读属性。                |
3161| GPS_TIME_STAMP<sup>10+</sup>             | "GPSTimeStamp"         | GPS时间戳,当前为只读属性。         |
3162| GPS_DATE_STAMP<sup>10+</sup>             | "GPSDateStamp"         | GPS日期戳,当前为只读属性。          |
3163| IMAGE_DESCRIPTION<sup>10+</sup>          | "ImageDescription"     | 图像信息描述,当前为只读属性。               |
3164| MAKE<sup>10+</sup>                       | "Make"                 | 生产商,当前为只读属性。                  |
3165| MODEL<sup>10+</sup>                      | "Model"                | 设备型号,当前为只读属性。                  |
3166| PHOTO_MODE<sup>10+</sup>                 | "PhotoMode "           | 拍照模式,当前为只读属性。              |
3167| SENSITIVITY_TYPE<sup>10+</sup>           | "SensitivityType"      | 灵敏度类型,当前为只读属性。             |
3168| STANDARD_OUTPUT_SENSITIVITY<sup>10+</sup>           | "StandardOutputSensitivity"          | 标准输出灵敏度,当前为只读属性。    |
3169| RECOMMENDED_EXPOSURE_INDEX<sup>10+</sup>            | "RecommendedExposureIndex"          | 推荐曝光指数,当前为只读属性。    |
3170| ISO_SPEED<sup>10+</sup>                             | "ISOSpeedRatings"          | ISO速度等级,当前为只读属性。    |
3171| APERTURE_VALUE<sup>10+</sup>             | "ApertureValue"            | 光圈值,当前为只读属性。    |
3172| EXPOSURE_BIAS_VALUE<sup>10+</sup>        | "ExposureBiasValue"        | 曝光偏差值,当前为只读属性。    |
3173| METERING_MODE<sup>10+</sup>              | "MeteringMode"             | 测光模式,当前为只读属性。    |
3174| LIGHT_SOURCE<sup>10+</sup>               | "LightSource"              | 光源,当前为只读属性。    |
3175| FLASH <sup>10+</sup>                     | "Flash"                    | 闪光灯,记录闪光灯状态,当前为只读属性。    |
3176| FOCAL_LENGTH <sup>10+</sup>              | "FocalLength"              | 焦距,当前为只读属性。    |
3177| USER_COMMENT <sup>10+</sup>               | "UserComment"              | 用户注释,当前为只读属性。    |
3178| PIXEL_X_DIMENSION <sup>10+</sup>          | "PixelXDimension"          | 像素X尺寸,当前为只读属性。   |
3179| PIXEL_Y_DIMENSION<sup>10+</sup>           | "PixelYDimension"          | 像素Y尺寸,当前为只读属性。    |
3180| WHITE_BALANCE <sup>10+</sup>              | "WhiteBalance"             | 白平衡,当前为只读属性。    |
3181| FOCAL_LENGTH_IN_35_MM_FILM <sup>10+</sup> | "FocalLengthIn35mmFilm"    | 焦距35毫米胶片,当前为只读属性。    |
3182| CAPTURE_MODE <sup>10+</sup>               | "HwMnoteCaptureMode"       | 捕获模式,当前为只读属性。    |
3183| PHYSICAL_APERTURE <sup>10+</sup>          | "HwMnotePhysicalAperture"  | 物理孔径,光圈大小,当前为只读属性。   |
3184
3185## ImageFormat<sup>9+</sup>
3186
3187枚举,图片格式。
3188
3189**系统能力:** SystemCapability.Multimedia.Image.Core
3190
3191| 名称         |   值   | 说明                 |
3192| ------------ | ------ | -------------------- |
3193| YCBCR_422_SP | 1000   | YCBCR422半平面格式。 |
3194| JPEG         | 2000   | JPEG编码格式。       |
3195
3196## ComponentType<sup>9+</sup>
3197
3198枚举,图像的组件类型。
3199
3200**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
3201
3202| 名称  |   值   | 说明        |
3203| ----- | ------ | ----------- |
3204| YUV_Y | 1      | 亮度信息。  |
3205| YUV_U | 2      | 色度信息。  |
3206| YUV_V | 3      | 色度信息。  |
3207| JPEG  | 4      | JPEG 类型。 |
3208
3209## Component<sup>9+</sup>
3210
3211描述图像颜色分量。
3212
3213**系统能力:** SystemCapability.Multimedia.Image.Core
3214
3215| 名称          | 类型                             | 可读 | 可写 | 说明         |
3216| ------------- | -------------------------------- | ---- | ---- | ------------ |
3217| componentType | [ComponentType](#componenttype9) | 是   | 否   | 组件类型。   |
3218| rowStride     | number                           | 是   | 否   | 行距。       |
3219| pixelStride   | number                           | 是   | 否   | 像素间距。   |
3220| byteBuffer    | ArrayBuffer                      | 是   | 否   | 组件缓冲区。 |
3221
3222## 补充说明
3223### SVG标签说明
3224
3225从API version 10开始支持SVG标签,使用版本为(SVG) 1.1,当前支持的标签列表有:
3226- a
3227- circla
3228- clipPath
3229- defs
3230- ellipse
3231- feBlend
3232- feColorMatrix
3233- feComposite
3234- feDiffuseLighting
3235- feDisplacementMap
3236- feDistantLight
3237- feFlood
3238- feGaussianBlur
3239- feImage
3240- feMorphology
3241- feOffset
3242- fePointLight
3243- feSpecularLighting
3244- feSpotLight
3245- feTurbulence
3246- filter
3247- g
3248- image
3249- line
3250- linearGradient
3251- mask
3252- path
3253- pattern
3254- polygon
3255- polyline
3256- radialGradient
3257- rect
3258- stop
3259- svg
3260- text
3261- textPath
3262- tspan
3263- use
3264