• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 图片处理
2
3> **说明:**
4> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5
6## 导入模块
7
8```js
9import image from '@ohos.multimedia.image';
10```
11
12## image.createPixelMap<sup>8+</sup>
13
14createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise\<PixelMap>
15
16通过属性创建PixelMap,通过Promise返回结果。
17
18**系统能力:** SystemCapability.Multimedia.Image.Core
19
20**参数:**
21
22| 名称    | 类型                                             | 必填 | 说明                                                         |
23| ------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
24| colors  | ArrayBuffer                                      | 是   | BGRA_8888格式的颜色数组。                                    |
25| options | [InitializationOptions](#initializationoptions8) | 是   | 创建像素的属性,包括透明度,尺寸,缩略值,像素格式和是否可编辑。 |
26
27**返回值:**
28
29| 类型                             | 说明           |
30| -------------------------------- | -------------- |
31| Promise\<[PixelMap](#pixelmap7)> | 返回Pixelmap。 |
32
33**示例:**
34
35```js
36const color = new ArrayBuffer(96);
37let bufferArr = new Uint8Array(color);
38let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
39image.createPixelMap(color, opts)
40    .then((pixelmap) => {
41        })
42```
43
44## image.createPixelMap<sup>8+</sup>
45
46createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback\<PixelMap>): void
47
48通过属性创建PixelMap,通过回调函数返回结果。
49
50**系统能力:** SystemCapability.Multimedia.Image.Core
51
52**参数:**
53
54| 名称     | 类型                                             | 必填 | 说明                       |
55| -------- | ------------------------------------------------ | ---- | -------------------------- |
56| colors   | ArrayBuffer                                      | 是   | BGRA_8888格式的颜色数组。  |
57| options  | [InitializationOptions](#initializationoptions8) | 是   | 属性。                     |
58| callback | AsyncCallback\<[PixelMap](#pixelmap7)>           | 是   | 通过回调返回PixelMap对象。 |
59
60**示例:**
61
62```js
63const color = new ArrayBuffer(96);
64let bufferArr = new Uint88Array(color);
65let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
66image.createPixelMap(color, opts, (pixelmap) => {
67        })
68```
69
70## PixelMap<sup>7+</sup>
71
72图像像素类,用于读取或写入图像数据以及获取图像信息。在调用PixelMap的方法前,需要先通过createPixelMap创建一个PixelMap实例。
73
74 ### 属性
75
76**系统能力:** SystemCapability.Multimedia.Image.Core
77
78| 名称                    | 类型    | 可读 | 可写 | 说明                       |
79| ----------------------- | ------- | ---- | ---- | -------------------------- |
80| isEditable<sup>7+</sup> | boolean | 是   | 否   | 设定是否图像像素可被编辑。 |
81
82### readPixelsToBuffer<sup>7+</sup>
83
84readPixelsToBuffer(dst: ArrayBuffer): Promise\<void>
85
86读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。
87
88**系统能力:** SystemCapability.Multimedia.Image.Core
89
90**参数:**
91
92| 参数名 | 类型        | 必填 | 说明                                                         |
93| ------ | ----------- | ---- | ------------------------------------------------------------ |
94| dst    | ArrayBuffer | 是   | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。 |
95
96**返回值:**
97
98| 类型           | 说明                                            |
99| :------------- | :---------------------------------------------- |
100| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 |
101
102**示例:**
103
104```js
105const readBuffer = new ArrayBuffer(400);
106pixelmap.readPixelsToBuffer(readBuffer).then(() => {
107    console.log('Succeeded in reading image pixel data.');  //符合条件则进入
108}).catch(error => {
109    console.log('Failed to read image pixel data.');  //不符合条件则进入
110})
111```
112
113### readPixelsToBuffer<sup>7+</sup>
114
115readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback\<void>): void
116
117读取图像像素数据,结果写入ArrayBuffer里,使用callback形式返回。
118
119**系统能力:** SystemCapability.Multimedia.Image.Core
120
121**参数:**
122
123| 参数名   | 类型                 | 必填 | 说明                                                         |
124| -------- | -------------------- | ---- | ------------------------------------------------------------ |
125| dst      | ArrayBuffer          | 是   | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。 |
126| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。                               |
127
128**示例:**
129
130```js
131const readBuffer = new ArrayBuffer(400);
132pixelmap.readPixelsToBuffer(readBuffer, (err, res) => {
133    if(err) {
134        console.log('Failed to read image pixel data.');  //不符合条件则进入
135    } else {
136        console.log('Succeeded in reading image pixel data.');  //符合条件则进入
137    }
138})
139```
140
141### readPixels<sup>7+</sup>
142
143readPixels(area: PositionArea): Promise\<void>
144
145读取区域内的图片数据,使用Promise形式返回读取结果。
146
147**系统能力:** SystemCapability.Multimedia.Image.Core
148
149**参数:**
150
151| 参数名 | 类型                           | 必填 | 说明                     |
152| ------ | ------------------------------ | ---- | ------------------------ |
153| area   | [PositionArea](#positionarea7) | 是   | 区域大小,根据区域读取。 |
154
155**返回值:**
156
157| 类型           | 说明                                                |
158| :------------- | :-------------------------------------------------- |
159| Promise\<void> | Promise实例,用于获取读取结果,失败时返回错误信息。 |
160
161**示例:**
162
163```js
164const area = new ArrayBuffer(400);
165pixelmap.readPixels(area).then(() => {
166    console.log('Succeeded in reading the image data in the area.'); //符合条件则进入
167}).catch(error => {
168    console.log('Failed to read the image data in the area.'); //不符合条件则进入
169})
170```
171
172### readPixels<sup>7+</sup>
173
174readPixels(area: PositionArea, callback: AsyncCallback\<void>): void
175
176读取区域内的图片数据,使用callback形式返回读取结果。
177
178**系统能力:** SystemCapability.Multimedia.Image.Core
179
180**参数:**
181
182| 参数名   | 类型                           | 必填 | 说明                           |
183| -------- | ------------------------------ | ---- | ------------------------------ |
184| area     | [PositionArea](#positionarea7) | 是   | 区域大小,根据区域读取。       |
185| callback | AsyncCallback\<void>           | 是   | 获取回调,失败时返回错误信息。 |
186
187**示例:**
188
189```js
190const color = new ArrayBuffer(96);
191let bufferArr = new Uint88Array(color);
192let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
193image.createPixelMap(color, opts, (err, pixelmap) => {
194    if(pixelmap == undefined){
195        console.info('createPixelMap failed.');
196    } else {
197        const area = { pixels: new ArrayBuffer(8),
198            offset: 0,
199            stride: 8,
200            region: { size: { height: 1, width: 2 }, x: 0, y: 0 }};
201        pixelmap.readPixels(area, () => {
202            console.info('readPixels success');
203        })
204    }
205})
206```
207
208### writePixels<sup>7+</sup>
209
210writePixels(area: PositionArea): Promise\<void>
211
212将PixelMap写入指定区域内,使用Promise形式返回写入结果。
213
214**系统能力:** SystemCapability.Multimedia.Image.Core
215
216**参数:**
217
218| 参数名 | 类型                           | 必填 | 说明                 |
219| ------ | ------------------------------ | ---- | -------------------- |
220| area   | [PositionArea](#positionarea7) | 是   | 区域,根据区域写入。 |
221
222**返回值:**
223
224| 类型           | 说明                                                |
225| :------------- | :-------------------------------------------------- |
226| Promise\<void> | Promise实例,用于获取写入结果,失败时返回错误信息。 |
227
228**示例:**
229
230```js
231const color = new ArrayBuffer(96);
232let bufferArr = new Uint88Array(color);
233let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
234image.createPixelMap(color, opts)
235    .then( pixelmap => {
236        if (pixelmap == undefined) {
237            console.info('createPixelMap failed.');
238        }
239        const area = { pixels: new ArrayBuffer(8),
240            offset: 0,
241            stride: 8,
242            region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
243        }
244        let bufferArr = new Uint8Array(area.pixels);
245        for (var i = 0; i < bufferArr.length; i++) {
246            bufferArr[i] = i + 1;
247        }
248
249        pixelmap.writePixels(area).then(() => {
250            const readArea = { pixels: new ArrayBuffer(8),
251                offset: 0,
252                stride: 8,
253                // region.size.width + x < opts.width, region.size.height + y < opts.height
254                region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
255            }
256        })
257    }).catch(error => {
258        console.log('error: ' + error);
259    })
260```
261
262### writePixels<sup>7+</sup>
263
264writePixels(area: PositionArea, callback: AsyncCallback\<void>): void
265
266将PixelMap写入指定区域内,使用callback形式返回写入结果。
267
268**系统能力:** SystemCapability.Multimedia.Image.Core
269
270**参数:**
271
272| 参数名    | 类型                           | 必填 | 说明                           |
273| --------- | ------------------------------ | ---- | ------------------------------ |
274| area      | [PositionArea](#positionarea7) | 是   | 区域,根据区域写入。           |
275| callback | AsyncCallback\<void>           | 是   | 获取回调,失败时返回错误信息。 |
276
277**示例:**
278
279```js
280const area = new ArrayBuffer(400);
281pixelmap.writePixels(area, (error) => {
282    if (error!=undefined) {
283		console.info('Failed to write pixelmap into the specified area.');
284	} else {
285	    const readArea = {
286            pixels: new ArrayBuffer(20),
287            offset: 0,
288            stride: 8,
289            region: { size: { height: 1, width: 2 }, x: 0, y: 0 },
290        }
291	}
292})
293```
294
295### writeBufferToPixels<sup>7+</sup>
296
297writeBufferToPixels(src: ArrayBuffer): Promise\<void>
298
299读取缓冲区中的图片数据,结果写入PixelMap中,使用Promise形式返回。
300
301**系统能力:** SystemCapability.Multimedia.Image.Core
302
303**参数:**
304
305| 参数名 | 类型        | 必填 | 说明           |
306| ------ | ----------- | ---- | -------------- |
307| src    | ArrayBuffer | 是   | 图像像素数据。 |
308
309**返回值:**
310
311| 类型           | 说明                                            |
312| -------------- | ----------------------------------------------- |
313| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 |
314
315**示例:**
316
317```js
318const color = new ArrayBuffer(96);
319const pixelMap = new ArrayBuffer(400);
320let bufferArr = new Uint88Array(color);
321pixelMap.writeBufferToPixels(color).then(() => {
322    console.log("Succeeded in writing data from a buffer to a PixelMap.");
323}).catch((err) => {
324    console.error("Failed to write data from a buffer to a PixelMap.");
325})
326```
327
328### writeBufferToPixels<sup>7+</sup>
329
330writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback\<void>): void
331
332读取缓冲区中的图片数据,结果写入PixelMap中,使用callback形式返回。
333
334**系统能力:** SystemCapability.Multimedia.Image.Core
335
336**参数:**
337
338| 参数名   | 类型                 | 必填 | 说明                           |
339| -------- | -------------------- | ---- | ------------------------------ |
340| src      | ArrayBuffer          | 是   | 图像像素数据。                 |
341| callback | AsyncCallback\<void> | 是   | 获取回调,失败时返回错误信息。 |
342
343**示例:**
344
345```js
346const color = new ArrayBuffer(96);\
347const pixelMap = new ArrayBuffer(400);
348let bufferArr = new Uint88Array(color);
349pixelMap.writeBufferToPixels(color, function(err) {
350    if (err) {
351        console.error("Failed to write data from a buffer to a PixelMap.");
352        return;
353    } else {
354		console.log("Succeeded in writing data from a buffer to a PixelMap.");
355	}
356});
357```
358
359### getImageInfo<sup>7+</sup>
360
361getImageInfo(): Promise\<ImageInfo>
362
363获取图像像素信息,使用Promise形式返回获取的图像像素信息。
364
365**系统能力:** SystemCapability.Multimedia.Image.Core
366
367**返回值:**
368
369| 类型                              | 说明                                                        |
370| --------------------------------- | ----------------------------------------------------------- |
371| Promise\<[ImageInfo](#imageinfo)> | Promise实例,用于异步获取图像像素信息,失败时返回错误信息。 |
372
373**示例:**
374
375```js
376const pixelMap = new ArrayBuffer(400);
377pixelMap.getImageInfo().then(function(info) {
378    console.log("Succeeded in obtaining the image pixel map information.");
379}).catch((err) => {
380    console.error("Failed to obtain the image pixel map information.");
381});
382```
383
384### getImageInfo<sup>7+</sup>
385
386getImageInfo(callback: AsyncCallback\<ImageInfo>): void
387
388获取图像像素信息,使用callback形式返回获取的图像像素信息。
389
390**系统能力:** SystemCapability.Multimedia.Image.Core
391
392**参数:**
393
394| 参数名   | 类型                                    | 必填 | 说明                                                         |
395| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
396| callback | AsyncCallback\<[ImageInfo](#imageinfo)> | 是   | 获取图像像素信息回调,异步返回图像像素信息,失败时返回错误信息。 |
397
398**示例:**
399
400```js
401pixelmap.getImageInfo((imageInfo) => {
402    console.log("Succeeded in obtaining the image pixel map information.");
403})
404```
405
406### getBytesNumberPerRow<sup>7+</sup>
407
408getBytesNumberPerRow(): number
409
410获取图像像素每行字节数。
411
412**系统能力:** SystemCapability.Multimedia.Image.Core
413
414**返回值:**
415
416| 类型   | 说明                 |
417| ------ | -------------------- |
418| number | 图像像素的行字节数。 |
419
420**示例:**
421
422```js
423const color = new ArrayBuffer(96);
424let bufferArr = new Uint88Array(color);
425let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
426image.createPixelMap(color, opts, (err,pixelmap) => {
427    let rowCount = pixelmap.getBytesNumberPerRow();
428})
429```
430
431### getPixelBytesNumber<sup>7+</sup>
432
433getPixelBytesNumber(): number
434
435获取图像像素的总字节数。
436
437**系统能力:** SystemCapability.Multimedia.Image.Core
438
439**返回值:**
440
441| 类型   | 说明                 |
442| ------ | -------------------- |
443| number | 图像像素的总字节数。 |
444
445**示例:**
446
447```js
448let pixelBytesNumber = pixelmap.getPixelBytesNumber();
449```
450
451### release<sup>7+</sup>
452
453release():Promise\<void>
454
455释放PixelMap对象,使用Promise形式返回释放结果。
456
457**系统能力:** SystemCapability.Multimedia.Image.Core
458
459**返回值:**
460
461| 类型           | 说明               |
462| -------------- | ------------------ |
463| Promise\<void> | 异步返回释放结果。 |
464
465**示例:**
466
467```js
468const color = new ArrayBuffer(96);
469let bufferArr = new Uint88Array(color);
470let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
471image.createPixelMap(color, opts, (pixelmap) => {
472    pixelmap.release().then(() => {
473	    console.log('Succeeded in releasing pixelmap object.');
474    }).catch(error => {
475	    console.log('Failed to release pixelmap object.');
476    })
477})
478```
479
480### release<sup>7+</sup>
481
482release(callback: AsyncCallback\<void>): void
483
484释放PixelMap对象,使用callback形式返回释放结果。
485
486**系统能力:** SystemCapability.Multimedia.Image.Core
487
488**参数:**
489
490| 名称     | 类型                 | 必填 | 说明               |
491| -------- | -------------------- | ---- | ------------------ |
492| callback | AsyncCallback\<void> | 是   | 异步返回释放结果。 |
493
494**示例:**
495
496```js
497const color = new ArrayBuffer(96);
498let bufferArr = new Uint88Array(color);
499let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
500image.createPixelMap(color, opts, (pixelmap) => {
501    pixelmap.release().then(() => {
502	    console.log('Succeeded in releasing pixelmap object.');
503    }).catch(error => {
504	    console.log('Failed to release pixelmap object.');
505    })
506})
507```
508
509## image.createImageSource
510
511createImageSource(uri: string): ImageSource
512
513通过传入的uri创建图片源实例。
514
515**系统能力:** SystemCapability.Multimedia.Image.ImageSource
516
517**参数:**
518
519| 参数名 | 类型   | 必填 | 说明                               |
520| ------ | ------ | ---- | ---------------------------------- |
521| uri    | string | 是   | 图片路径,当前仅支持应用沙箱路径。 |
522
523**返回值:**
524
525| 类型                        | 说明                                         |
526| --------------------------- | -------------------------------------------- |
527| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
528
529**示例:**
530
531```js
532let path = this.context.getApplicationContext().fileDirs + "test.jpg";
533const imageSourceApi = image.createImageSource(path);
534```
535
536## image.createImageSource<sup>7+</sup>
537
538createImageSource(fd: number): ImageSource
539
540通过传入文件描述符来创建图片源实例。
541
542**系统能力:** SystemCapability.Multimedia.Image.ImageSource
543
544**参数:**
545
546| 参数名 | 类型   | 必填 | 说明          |
547| ------ | ------ | ---- | ------------- |
548| fd     | number | 是   | 文件描述符fd。|
549
550**返回值:**
551
552| 类型                        | 说明                                         |
553| --------------------------- | -------------------------------------------- |
554| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 |
555
556**示例:**
557
558```js
559const imageSourceApi = image.createImageSource(0)
560```
561
562## ImageSource
563
564图片源类,用于获取图片相关信息。在调用ImageSource的方法前,需要先通过createImageSource构建一个ImageSource实例。
565
566### 属性
567
568**系统能力:** SystemCapability.Multimedia.Image.ImageSource
569
570| 名称             | 类型           | 可读 | 可写 | 说明                                                         |
571| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ |
572| supportedFormats | Array\<string> | 是   | 否   | 支持的图片格式,包括:png,jpeg,wbmp,bmp,gif,webp,heif等。 |
573
574### getImageInfo
575
576getImageInfo(index: number, callback: AsyncCallback\<ImageInfo>): void
577
578获取指定序号的图片信息,使用callback形式返回图片信息。
579
580**系统能力:** SystemCapability.Multimedia.Image.ImageSource
581
582**参数:**
583
584| 参数名   | 类型                                   | 必填 | 说明                                     |
585| -------- | -------------------------------------- | ---- | ---------------------------------------- |
586| index    | number                                 | 是   | 创建图片源时的序号。                     |
587| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是   | 获取图片信息回调,异步返回图片信息对象。 |
588
589**示例:**
590
591```js
592imageSourceApi.getImageInfo(0,(error, imageInfo) => {
593    if(error) {
594        console.log('getImageInfo failed.');
595    } else {
596        console.log('getImageInfo succeeded.');
597    }
598})
599```
600
601### getImageInfo
602
603getImageInfo(callback: AsyncCallback\<ImageInfo>): void
604
605获取图片信息,使用callback形式返回图片信息。
606
607**系统能力:** SystemCapability.Multimedia.Image.ImageSource
608
609**参数:**
610
611| 名称     | 类型                                   | 必填 | 说明                                     |
612| -------- | -------------------------------------- | ---- | ---------------------------------------- |
613| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是   | 获取图片信息回调,异步返回图片信息对象。 |
614
615**示例:**
616
617```js
618imageSourceApi.getImageInfo(imageInfo => {
619    console.log('Succeeded in obtaining the image information.');
620})
621```
622
623### getImageInfo
624
625getImageInfo(index?: number): Promise\<ImageInfo>
626
627获取图片信息,使用Promise形式返回图片信息。
628
629**系统能力:** SystemCapability.Multimedia.Image.ImageSource
630
631**参数:**
632
633| 名称  | 类型   | 必填 | 说明                                  |
634| ----- | ------ | ---- | ------------------------------------- |
635| index | number | 否   | 创建图片源时的序号,不选择时默认为0。 |
636
637**返回值:**
638
639| 类型                             | 说明                   |
640| -------------------------------- | ---------------------- |
641| Promise<[ImageInfo](#imageinfo)> | 返回获取到的图片信息。 |
642
643**示例:**
644
645```js
646imageSourceApi.getImageInfo(0)
647    .then(imageInfo => {
648		console.log('Succeeded in obtaining the image information.');
649	}).catch(error => {
650		console.log('Failed to obtain the image information.');
651	})
652```
653
654### getImageProperty<sup>7+</sup>
655
656getImageProperty(key:string, options?: GetImagePropertyOptions): Promise\<string>
657
658获取图片中给定索引处图像的指定属性键的值,用Promise形式返回结果。
659
660**系统能力:** SystemCapability.Multimedia.Image.ImageSource
661
662 **参数:**
663
664| 名称    | 类型                                                 | 必填 | 说明                                 |
665| ------- | ---------------------------------------------------- | ---- | ------------------------------------ |
666| key     | string                                               | 是   | 图片属性名。                         |
667| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | 否   | 图片属性,包括图片序号与默认属性值。 |
668
669**返回值:**
670
671| 类型             | 说明                                                         |
672| ---------------- | ------------------------------------------------------------ |
673| Promise\<string> | Promise实例,用于异步获取图片属性值,如获取失败则返回属性默认值。 |
674
675**示例:**
676
677```js
678imageSourceApi.getImageProperty("BitsPerSample")
679    .then(data => {
680		console.log('Succeeded in getting the value of the specified attribute key of the image.');
681	})
682```
683
684### getImageProperty<sup>7+</sup>
685
686getImageProperty(key:string, callback: AsyncCallback\<string>): void
687
688获取图片中给定索引处图像的指定属性键的值,用callback形式返回结果。
689
690**系统能力:** SystemCapability.Multimedia.Image.ImageSource
691
692 **参数:**
693
694| 参数名   | 类型                   | 必填 | 说明                                                         |
695| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
696| key      | string                 | 是   | 图片属性名。                                                 |
697| callback | AsyncCallback\<string> | 是   | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 |
698
699**示例:**
700
701```js
702imageSourceApi.getImageProperty("BitsPerSample",(error,data) => {
703    if(error) {
704        console.log('Failed to get the value of the specified attribute key of the image.');
705    } else {
706        console.log('Succeeded in getting the value of the specified attribute key of the image.');
707    }
708})
709```
710
711### getImageProperty<sup>7+</sup>
712
713getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback\<string>): void
714
715获取图片指定属性键的值,callback形式返回结果。
716
717**系统能力:** SystemCapability.Multimedia.Image.ImageSource
718
719**参数:**
720
721| 参数名   | 类型                                                 | 必填 | 说明                                                         |
722| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ |
723| key      | string                                               | 是   | 图片属性名。                                                 |
724| options  | [GetImagePropertyOptions](#getimagepropertyoptions7) | 是   | 图片属性,包括图片序号与默认属性值。                         |
725| callback | AsyncCallback\<string>                               | 是   | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 |
726
727**示例:**
728
729```js
730const property = new ArrayBuffer(400);
731imageSourceApi.getImageProperty("BitsPerSample",property,(error,data) => {
732    if(error) {
733        console.log('Failed to get the value of the specified attribute key of the image.');
734    } else {
735        console.log('Succeeded in getting the value of the specified attribute key of the image.');
736    }
737})
738```
739
740### createPixelMap<sup>7+</sup>
741
742createPixelMap(options?: DecodingOptions): Promise\<PixelMap>
743
744通过图片解码参数创建PixelMap对象。
745
746**系统能力:** SystemCapability.Multimedia.Image.ImageSource
747
748**参数:**
749
750| 名称    | 类型                                 | 必填 | 说明       |
751| ------- | ------------------------------------ | ---- | ---------- |
752| options | [DecodingOptions](#decodingoptions7) | 否   | 解码参数。 |
753
754**返回值:**
755
756| 类型                             | 说明                  |
757| -------------------------------- | --------------------- |
758| Promise\<[PixelMap](#pixelmap7)> | 异步返回Promise对象。 |
759
760**示例:**
761
762```js
763imageSourceApi.createPixelMap().then(pixelmap => {
764    console.log('Succeeded in creating pixelmap object through image decoding parameters.');
765}).catch(error => {
766    console.log('Failed to create pixelmap object through image decoding parameters.');
767})
768```
769
770### createPixelMap<sup>7+</sup>
771
772createPixelMap(callback: AsyncCallback\<PixelMap>): void
773
774通过默认参数创建PixelMap对象,使用callback形式返回结果。
775
776**系统能力:** SystemCapability.Multimedia.Image.ImageSource
777
778**参数:**
779
780| 名称     | 类型                                  | 必填 | 说明                       |
781| -------- | ------------------------------------- | ---- | -------------------------- |
782| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是   | 通过回调返回PixelMap对象。 |
783
784**示例:**
785
786```js
787imageSourceApi.createPixelMap(pixelmap => {
788    console.log('Succeeded in creating pixelmap object.');
789}).catch(error => {
790    console.log('Failed to create pixelmap object.');
791})
792```
793
794### createPixelMap<sup>7+</sup>
795
796createPixelMap(options: DecodingOptions, callback: AsyncCallback\<PixelMap>): void
797
798通过图片解码参数创建PixelMap对象。
799
800**系统能力:** SystemCapability.Multimedia.Image.ImageSource
801
802**参数:**
803
804| 名称     | 类型                                  | 必填 | 说明                       |
805| -------- | ------------------------------------- | ---- | -------------------------- |
806| options  | [DecodingOptions](#decodingoptions7)  | 是   | 解码参数。                 |
807| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是   | 通过回调返回PixelMap对象。 |
808
809**示例:**
810
811```js
812const decodingOptions = new ArrayBuffer(400);
813imageSourceApi.createPixelMap(decodingOptions, pixelmap => {
814    console.log('Succeeded in creating pixelmap object.');
815})
816```
817
818### release
819
820release(callback: AsyncCallback\<void>): void
821
822释放图片源实例,使用callback形式返回结果。
823
824**系统能力:** SystemCapability.Multimedia.Image.ImageSource
825
826**参数:**
827
828| 名称     | 类型                 | 必填 | 说明                               |
829| -------- | -------------------- | ---- | ---------------------------------- |
830| callback | AsyncCallback\<void> | 是   | 资源释放回调,失败时返回错误信息。 |
831
832**示例:**
833
834```js
835imageSourceApi.release(() => {
836    console.log('release succeeded.');
837})
838```
839
840### release
841
842release(): Promise\<void>
843
844释放图片源实例,使用Promise形式返回结果。
845
846**系统能力:** SystemCapability.Multimedia.Image.ImageSource
847
848**返回值:**
849
850| 类型           | 说明                        |
851| -------------- | --------------------------- |
852| Promise\<void> | Promise实例,异步返回结果。 |
853
854**示例:**
855
856```js
857imageSourceApi.release().then(()=>{
858    console.log('Succeeded in releasing the image source instance.');
859}).catch(error => {
860    console.log('Failed to release the image source instance.');
861})
862```
863
864## image.createImagePacker
865
866createImagePacker(): ImagePacker
867
868创建ImagePacker实例。
869
870**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver
871
872**返回值:**
873
874| 类型                        | 说明                  |
875| --------------------------- | --------------------- |
876| [ImagePacker](#imagepacker) | 返回ImagePacker实例。 |
877
878**示例:**
879
880```js
881const imagePackerApi = image.createImagePacker();
882```
883
884## ImagePacker
885
886图片打包器类,用于图片压缩和打包。在调用ImagePacker的方法前,需要先通过createImagePacker构建一个ImagePacker实例。
887
888### 属性
889
890**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
891
892| 名称             | 类型           | 可读 | 可写 | 说明                       |
893| ---------------- | -------------- | ---- | ---- | -------------------------- |
894| supportedFormats | Array\<string> | 是   | 否   | 图片打包支持的格式,jpeg。 |
895
896### packing
897
898packing(source: ImageSource, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void
899
900图片压缩或重新打包,使用callback形式返回结果。
901
902**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
903
904**参数:**
905
906| 参数名   | 类型                               | 必填 | 说明                               |
907| -------- | ---------------------------------- | ---- | ---------------------------------- |
908| source   | [ImageSource](#imagesource)        | 是   | 打包的图片源。                     |
909| option   | [PackingOption](#packingoption)    | 是   | 设置打包参数。                     |
910| callback | AsyncCallback\<ArrayBuffer>        | 是   | 获取图片打包回调,返回打包后数据。 |
911
912**示例:**
913
914```js
915let packOpts = { format:"image/jpeg", quality:98 };
916const imageSourceApi = new ArrayBuffer(400);
917imagePackerApi.packing(imageSourceApi, packOpts, data => {})
918```
919
920### packing
921
922packing(source: ImageSource, option: PackingOption): Promise\<ArrayBuffer>
923
924图片压缩或重新打包,使用Promise形式返回结果。
925
926**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
927
928**参数:**
929
930| 参数名 | 类型                            | 必填 | 说明           |
931| ------ | ------------------------------- | ---- | -------------- |
932| source | [ImageSource](#imagesource)     | 是   | 打包的图片源。 |
933| option | [PackingOption](#packingoption) | 是   | 设置打包参数。 |
934
935**返回值:**
936
937| 类型                         | 说明                                          |
938| :--------------------------- | :-------------------------------------------- |
939| Promise\<ArrayBuffer> | Promise实例,用于异步获取压缩或打包后的数据。 |
940
941**示例:**
942
943```js
944let packOpts = { format:"image/jpeg", quality:98 }
945const imageSourceApi = new ArrayBuffer(400);
946imagePackerApi.packing(imageSourceApi, packOpts)
947    .then( data => {
948        console.log('packing succeeded.');
949	}).catch(error => {
950	    console.log('packing failed.');
951	})
952```
953
954### packing<sup>8+</sup>
955
956packing(source: PixelMap, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void
957
958图片压缩或重新打包,使用callback形式返回结果。
959
960**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
961
962**参数:**
963
964| 参数名   | 类型                            | 必填 | 说明                               |
965| -------- | ------------------------------- | ---- | ---------------------------------- |
966| source   | [PixelMap](#pixelmap)           | 是   | 打包的PixelMap资源。               |
967| option   | [PackingOption](#packingoption) | 是   | 设置打包参数。                     |
968| callback | AsyncCallback\<ArrayBuffer>     | 是   | 获取图片打包回调,返回打包后数据。 |
969
970**示例:**
971
972```js
973let packOpts = { format:"image/jpeg", quality:98 }
974const pixelMapApi = new ArrayBuffer(400);
975imagePackerApi.packing(pixelMapApi, packOpts, data => {
976    console.log('Succeeded in packing the image.');
977}).catch(error => {
978	console.log('Failed to pack the image.');
979})
980```
981
982### packing<sup>8+</sup>
983
984packing(source: PixelMap, option: PackingOption): Promise\<ArrayBuffer>
985
986图片压缩或重新打包,使用Promise形式返回结果。
987
988**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
989
990**参数:**
991
992| 参数名 | 类型                            | 必填 | 说明               |
993| ------ | ------------------------------- | ---- | ------------------ |
994| source | [PixelMap](#pixelmap)           | 是   | 打包的PixelMap源。 |
995| option | [PackingOption](#packingoption) | 是   | 设置打包参数。     |
996
997**返回值:**
998
999| 类型                         | 说明                                          |
1000| :--------------------------- | :-------------------------------------------- |
1001| Promise\<ArrayBuffer> | Promise实例,用于异步获取压缩或打包后的数据。 |
1002
1003**示例:**
1004
1005```js
1006let packOpts = { format:"image/jpeg", quality:98 }
1007const pixelMapApi = new ArrayBuffer(400);
1008imagePackerApi.packing(pixelMapApi, packOpts)
1009    .then( data => {
1010	    console.log('Succeeded in packing the image.');
1011	}).catch(error => {
1012	    console.log('Failed to pack the image.');
1013	})
1014```
1015
1016### release
1017
1018release(callback: AsyncCallback\<void>): void
1019
1020释放图片打包实例,使用callback形式返回结果。
1021
1022**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
1023
1024**参数:**
1025
1026| 参数名   | 类型                 | 必填 | 说明                           |
1027| -------- | -------------------- | ---- | ------------------------------ |
1028| callback | AsyncCallback\<void> | 是   | 释放回调,失败时返回错误信息。 |
1029
1030**示例:**
1031
1032```js
1033imagePackerApi.release(()=>{
1034    console.log('Succeeded in releasing image packaging.');
1035})
1036```
1037
1038### release
1039
1040release(): Promise\<void>
1041
1042释放图片打包实例,使用Promise形式返回释放结果。
1043
1044**系统能力:** SystemCapability.Multimedia.Image.ImagePacker
1045
1046**返回值:**
1047
1048| 类型           | 说明                                                    |
1049| :------------- | :------------------------------------------------------ |
1050| Promise\<void> | Promise实例,用于异步获取释放结果,失败时返回错误信息。 |
1051
1052**示例:**
1053
1054```js
1055imagePackerApi.release().then(()=>{
1056    console.log('Succeeded in releasing image packaging.');
1057}).catch((error)=>{
1058    console.log('Failed to release image packaging.');
1059})
1060```
1061
1062
1063## PositionArea<sup>7+</sup>
1064
1065表示图片指定区域内的数据。
1066
1067**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1068
1069| 名称   | 类型               | 可读 | 可写 | 说明                                                         |
1070| ------ | ------------------ | ---- | ---- | ------------------------------------------------------------ |
1071| pixels | ArrayBuffer        | 是   | 否   | 像素。                                                       |
1072| offset | number             | 是   | 否   | 偏移量。                                                     |
1073| stride | number             | 是   | 否   | 像素间距,stride >= region.size.width*4。                    |
1074| region | [Region](#region7) | 是   | 否   | 区域,按照区域读写。写入的区域宽度加X坐标不能大于原图的宽度,写入的区域高度加Y坐标不能大于原图的高度 |
1075
1076## ImageInfo
1077
1078表示图片信息。
1079
1080**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1081
1082| 名称 | 类型          | 可读 | 可写 | 说明       |
1083| ---- | ------------- | ---- | ---- | ---------- |
1084| size | [Size](#size) | 是   | 是   | 图片大小。 |
1085
1086## Size
1087
1088表示图片尺寸。
1089
1090**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1091
1092| 名称   | 类型   | 可读 | 可写 | 说明           |
1093| ------ | ------ | ---- | ---- | -------------- |
1094| height | number | 是   | 是   | 输出图片的高。 |
1095| width  | number | 是   | 是   | 输出图片的宽。 |
1096
1097## PixelMapFormat<sup>7+</sup>
1098
1099枚举,图片像素格式。
1100
1101**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1102
1103| 名称      | 默认值 | 描述              |
1104| --------- | ------ | ----------------- |
1105| UNKNOWN   | 0      | 未知格式。        |
1106| RGBA_8888 | 3      | 格式为RGBA_8888。 |
1107| RGB_565   | 2      | 格式为RGB_565。   |
1108
1109
1110
1111## InitializationOptions<sup>8+</sup>
1112
1113PixelMap的初始化选项。
1114
1115**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Code
1116
1117| 名称                   | 类型                               | 可读 | 可写 | 说明           |
1118| ---------------------- | ---------------------------------- | ---- | ---- | -------------- |
1119| editable               | boolean                            | 是   | 是   | 是否可编辑。   |
1120| pixelFormat            | [PixelMapFormat](#pixelmapformat7) | 是   | 是   | 像素格式。     |
1121| size                   | [Size](#size)                      | 是   | 是   | 创建图片大小。 |
1122
1123## DecodingOptions<sup>7+</sup>
1124
1125图像解码设置选项。
1126
1127**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.ImageSource
1128
1129| 名称               | 类型                               | 可读 | 可写 | 说明             |
1130| ------------------ | ---------------------------------- | ---- | ---- | ---------------- |
1131| sampleSize         | number                             | 是   | 是   | 缩略图采样大小。 |
1132| rotate             | number                             | 是   | 是   | 旋转角度。       |
1133| editable           | boolean                            | 是   | 是   | 是否可编辑。     |
1134| desiredSize        | [Size](#size)                      | 是   | 是   | 期望输出大小。   |
1135| desiredRegion      | [Region](#region7)                 | 是   | 是   | 解码区域。       |
1136| desiredPixelFormat | [PixelMapFormat](#pixelmapformat7) | 是   | 是   | 解码的像素格式。 |
1137| index              | number                             | 是   | 是   | 解码图片序号。   |
1138
1139## Region<sup>7+</sup>
1140
1141表示区域信息。
1142
1143**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1144
1145| 名称 | 类型          | 可读 | 可写 | 说明         |
1146| ---- | ------------- | ---- | ---- | ------------ |
1147| size | [Size](#size) | 是   | 是   | 区域大小。   |
1148| x    | number        | 是   | 是   | 区域横坐标。 |
1149| y    | number        | 是   | 是   | 区域纵坐标。 |
1150
1151## PackingOption
1152
1153表示图片打包选项。
1154
1155**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.ImagePacker
1156
1157| 名称    | 类型   | 可读 | 可写 | 说明           |
1158| ------- | ------ | ---- | ---- | -------------- |
1159| format  | string | 是   | 是   | 目标格式。     |
1160| quality | number | 是   | 是   | JPEG编码中设定输出图片质量的参数,取值范围为1-100。 |
1161
1162## GetImagePropertyOptions<sup>7+</sup>
1163
1164表示查询图片属性的索引。
1165
1166**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.ImageSource
1167
1168| 名称         | 类型   | 可读 | 可写 | 说明         |
1169| ------------ | ------ | ---- | ---- | ------------ |
1170| index        | number | 是   | 是   | 图片序号。   |
1171| defaultValue | string | 是   | 是   | 默认属性值。 |
1172
1173## PropertyKey<sup>7+</sup>
1174
1175枚举,Exif(Exchangeable image file format)图片信息。
1176
1177**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Image.Core
1178
1179| 名称              | 默认值            | 说明                |
1180| ----------------- | ----------------- | ------------------- |
1181| BITS_PER_SAMPLE   | "BitsPerSample"   | 每个像素比特数。    |
1182| ORIENTATION       | "Orientation"     | 图片方向。          |
1183| IMAGE_LENGTH      | "ImageLength"     | 图片长度。          |
1184| IMAGE_WIDTH       | "ImageWidth"      | 图片宽度。          |
1185| GPS_LATITUDE      | "GPSLatitude"     | 图片纬度。          |
1186| GPS_LONGITUDE     | "GPSLongitude"    | 图片经度。          |
1187| GPS_LATITUDE_REF  | "GPSLatitudeRef"  | 纬度引用,例如N或S。|
1188| GPS_LONGITUDE_REF | "GPSLongitudeRef" | 经度引用,例如W或E。|
1189
1190
1191## ResponseCode
1192
1193编译错误返回的响应码。
1194
1195
1196| 名称                                | 值       | 说明                                                |
1197| ----------------------------------- | -------- | --------------------------------------------------- |
1198| ERR_MEDIA_INVALID_VALUE             | -1       | 无效大小。                                          |
1199| SUCCESS                             | 0        | 操作成功。                                          |
1200| ERROR                               | 62980096 | 操作失败。                                          |
1201| ERR_IPC                             | 62980097 | ipc错误。                                           |
1202| ERR_SHAMEM_NOT_EXIST                | 62980098 | 共享内存错误。                                      |
1203| ERR_SHAMEM_DATA_ABNORMAL            | 62980099 | 共享内存错误。                                      |
1204| ERR_IMAGE_DECODE_ABNORMAL           | 62980100 | 图像解码错误。                                      |
1205| ERR_IMAGE_DATA_ABNORMAL             | 62980101 | 图像输入数据错误。                                  |
1206| ERR_IMAGE_MALLOC_ABNORMAL           | 62980102 | 图像malloc错误。                                    |
1207| ERR_IMAGE_DATA_UNSUPPORT            | 62980103 | 不支持图像类型。                                    |
1208| ERR_IMAGE_INIT_ABNORMAL             | 62980104 | 图像初始化错误。                                    |
1209| ERR_IMAGE_GET_DATA_ABNORMAL         | 62980105 | 图像获取数据错误。                                  |
1210| ERR_IMAGE_TOO_LARGE                 | 62980106 | 图像数据太大。                                      |
1211| ERR_IMAGE_TRANSFORM                 | 62980107 | 图像转换错误。                                      |
1212| ERR_IMAGE_COLOR_CONVERT             | 62980108 | 图像颜色转换错误。                                  |
1213| ERR_IMAGE_CROP                      | 62980109 | 裁剪错误。                                          |
1214| ERR_IMAGE_SOURCE_DATA               | 62980110 | 图像源数据错误。                                    |
1215| ERR_IMAGE_SOURCE_DATA_INCOMPLETE    | 62980111 | 图像源数据不完整。                                  |
1216| ERR_IMAGE_MISMATCHED_FORMAT         | 62980112 | 图像格式不匹配。                                    |
1217| ERR_IMAGE_UNKNOWN_FORMAT            | 62980113 | 图像未知格式。                                      |
1218| ERR_IMAGE_SOURCE_UNRESOLVED         | 62980114 | 图像源未解析。                                      |
1219| ERR_IMAGE_INVALID_PARAMETER         | 62980115 | 图像无效参数。                                      |
1220| ERR_IMAGE_DECODE_FAILED             | 62980116 | 解码失败。                                          |
1221| ERR_IMAGE_PLUGIN_REGISTER_FAILED    | 62980117 | 注册插件失败。                                      |
1222| ERR_IMAGE_PLUGIN_CREATE_FAILED      | 62980118 | 创建插件失败。                                      |
1223| ERR_IMAGE_ENCODE_FAILED             | 62980119 | 图像编码失败。                                      |
1224| ERR_IMAGE_ADD_PIXEL_MAP_FAILED      | 62980120 | 图像添加像素映射失败。                              |
1225| ERR_IMAGE_HW_DECODE_UNSUPPORT       | 62980121 | 不支持图像硬件解码。                                |
1226| ERR_IMAGE_DECODE_HEAD_ABNORMAL      | 62980122 | 图像解码头错误。                                    |
1227| ERR_IMAGE_DECODE_EXIF_UNSUPPORT     | 62980123 | 图像解码exif取消支持。                              |
1228| ERR_IMAGE_PROPERTY_NOT_EXIST        | 62980124 | 图像属性不存在;错误代码被媒体占用,图像从150开始。 |
1229| ERR_IMAGE_READ_PIXELMAP_FAILED      | 62980246 | 读取像素地图失败。                                  |
1230| ERR_IMAGE_WRITE_PIXELMAP_FAILED     | 62980247 | 写入像素映射失败。                                  |
1231| ERR_IMAGE_PIXELMAP_NOT_ALLOW_MODIFY | 62980248 | pixelmap不允许修改。                                |
1232| ERR_IMAGE_CONFIG_FAILED             | 62980259 | 配置错误。                                          |
1233