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