1# @ohos.multimedia.image (图片处理) 2 3本模块提供图片处理效果,包括通过属性创建PixelMap、读取图像像素数据、读取区域内的图片数据等。 4 5> **说明:** 6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 7 8## 导入模块 9 10```js 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```js 39const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 40let bufferArr = new Uint8Array(color); 41let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 42image.createPixelMap(color, opts).then((pixelmap) => { 43 console.log('Succeeded in creating pixelmap.'); 44}).catch(error => { 45 console.log('Failed to create pixelmap.'); 46}) 47``` 48 49## image.createPixelMap<sup>8+</sup> 50 51createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback\<PixelMap>): void 52 53通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,通过回调函数返回结果。 54 55**系统能力:** SystemCapability.Multimedia.Image.Core 56 57**参数:** 58 59| 参数名 | 类型 | 必填 | 说明 | 60| -------- | ------------------------------------------------ | ---- | -------------------------- | 61| colors | ArrayBuffer | 是 | BGRA_8888格式的颜色数组。 | 62| options | [InitializationOptions](#initializationoptions8) | 是 | 属性。 | 63| callback | AsyncCallback\<[PixelMap](#pixelmap7)> | 是 | 通过回调返回PixelMap对象。 | 64 65**示例:** 66 67```js 68const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 69let bufferArr = new Uint8Array(color); 70let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 71image.createPixelMap(color, opts, (error, pixelmap) => { 72 if(error) { 73 console.log('Failed to create pixelmap.'); 74 } else { 75 console.log('Succeeded in creating pixelmap.'); 76 } 77}) 78``` 79 80## PixelMap<sup>7+</sup> 81 82图像像素类,用于读取或写入图像数据以及获取图像信息。在调用PixelMap的方法前,需要先通过createPixelMap创建一个PixelMap实例。目前pixelmap序列化大小最大128MB,超过会送显失败。大小计算方式为(宽\*高\*每像素占用字节数)。 83 84 ### 属性 85 86**系统能力:** SystemCapability.Multimedia.Image.Core 87 88| 名称 | 类型 | 可读 | 可写 | 说明 | 89| ---------- | ------- | ---- | ---- | -------------------------- | 90| isEditable | boolean | 是 | 否 | 设定是否图像像素可被编辑。 | 91 92### readPixelsToBuffer<sup>7+</sup> 93 94readPixelsToBuffer(dst: ArrayBuffer): Promise\<void> 95 96读取图像像素数据,结果写入ArrayBuffer里,使用Promise形式返回。指定BGRA_8888格式创建pixelmap,读取的像素数据与原数据保持一致。 97 98**系统能力:** SystemCapability.Multimedia.Image.Core 99 100**参数:** 101 102| 参数名 | 类型 | 必填 | 说明 | 103| ------ | ----------- | ---- | ----------------------------------------------------------------------------------------------------- | 104| dst | ArrayBuffer | 是 | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。缓冲区大小由getPixelBytesNumber接口获取。 | 105 106**返回值:** 107 108| 类型 | 说明 | 109| -------------- | ----------------------------------------------- | 110| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 | 111 112**示例:** 113 114```js 115const readBuffer = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 116pixelmap.readPixelsToBuffer(readBuffer).then(() => { 117 console.log('Succeeded in reading image pixel data.'); //符合条件则进入 118}).catch(error => { 119 console.log('Failed to read image pixel data.'); //不符合条件则进入 120}) 121``` 122 123### readPixelsToBuffer<sup>7+</sup> 124 125readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback\<void>): void 126 127读取图像像素数据,结果写入ArrayBuffer里,使用callback形式返回。指定BGRA_8888格式创建pixelmap,读取的像素数据与原数据保持一致。 128 129**系统能力:** SystemCapability.Multimedia.Image.Core 130 131**参数:** 132 133| 参数名 | 类型 | 必填 | 说明 | 134| -------- | -------------------- | ---- | ----------------------------------------------------------------------------------------------------- | 135| dst | ArrayBuffer | 是 | 缓冲区,函数执行结束后获取的图像像素数据写入到该内存区域内。缓冲区大小由getPixelBytesNumber接口获取。 | 136| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 137 138**示例:** 139 140```js 141const readBuffer = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 142pixelmap.readPixelsToBuffer(readBuffer, (err, res) => { 143 if(err) { 144 console.log('Failed to read image pixel data.'); //不符合条件则进入 145 } else { 146 console.log('Succeeded in reading image pixel data.'); //符合条件则进入 147 } 148}) 149``` 150 151### readPixels<sup>7+</sup> 152 153readPixels(area: PositionArea): Promise\<void> 154 155读取区域内的图片数据,使用Promise形式返回读取结果。 156 157**系统能力:** SystemCapability.Multimedia.Image.Core 158 159**参数:** 160 161| 参数名 | 类型 | 必填 | 说明 | 162| ------ | ------------------------------ | ---- | ------------------------ | 163| area | [PositionArea](#positionarea7) | 是 | 区域大小,根据区域读取。 | 164 165**返回值:** 166 167| 类型 | 说明 | 168| :------------- | :-------------------------------------------------- | 169| Promise\<void> | Promise实例,用于获取读取结果,失败时返回错误信息。 | 170 171**示例:** 172 173```js 174const area = { 175 pixels: new ArrayBuffer(8), 176 offset: 0, 177 stride: 8, 178 region: { size: { height: 1, width: 2 }, x: 0, y: 0 } 179} 180pixelmap.readPixels(area).then(() => { 181 console.log('Succeeded in reading the image data in the area.'); //符合条件则进入 182}).catch(error => { 183 console.log('Failed to read the image data in the area.'); //不符合条件则进入 184}) 185``` 186 187### readPixels<sup>7+</sup> 188 189readPixels(area: PositionArea, callback: AsyncCallback\<void>): void 190 191读取区域内的图片数据,使用callback形式返回读取结果。 192 193**系统能力:** SystemCapability.Multimedia.Image.Core 194 195**参数:** 196 197| 参数名 | 类型 | 必填 | 说明 | 198| -------- | ------------------------------ | ---- | ------------------------------ | 199| area | [PositionArea](#positionarea7) | 是 | 区域大小,根据区域读取。 | 200| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 201 202**示例:** 203 204```js 205const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 206let bufferArr = new Uint8Array(color); 207let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 208image.createPixelMap(color, opts, (err, pixelmap) => { 209 if(pixelmap == undefined){ 210 console.info('createPixelMap failed.'); 211 } else { 212 const area = { pixels: new ArrayBuffer(8), 213 offset: 0, 214 stride: 8, 215 region: { size: { height: 1, width: 2 }, x: 0, y: 0 }}; 216 pixelmap.readPixels(area, () => { 217 console.info('readPixels success'); 218 }) 219 } 220}) 221``` 222 223### writePixels<sup>7+</sup> 224 225writePixels(area: PositionArea): Promise\<void> 226 227将PixelMap写入指定区域内,使用Promise形式返回写入结果。 228 229**系统能力:** SystemCapability.Multimedia.Image.Core 230 231**参数:** 232 233| 参数名 | 类型 | 必填 | 说明 | 234| ------ | ------------------------------ | ---- | -------------------- | 235| area | [PositionArea](#positionarea7) | 是 | 区域,根据区域写入。 | 236 237**返回值:** 238 239| 类型 | 说明 | 240| :------------- | :-------------------------------------------------- | 241| Promise\<void> | Promise实例,用于获取写入结果,失败时返回错误信息。 | 242 243**示例:** 244 245```js 246const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 247let bufferArr = new Uint8Array(color); 248let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 249image.createPixelMap(color, opts) 250 .then( pixelmap => { 251 if (pixelmap == undefined) { 252 console.info('createPixelMap failed.'); 253 } 254 const area = { pixels: new ArrayBuffer(8), 255 offset: 0, 256 stride: 8, 257 region: { size: { height: 1, width: 2 }, x: 0, y: 0 } 258 } 259 let bufferArr = new Uint8Array(area.pixels); 260 for (var i = 0; i < bufferArr.length; i++) { 261 bufferArr[i] = i + 1; 262 } 263 264 pixelmap.writePixels(area).then(() => { 265 console.info('Succeeded to write pixelmap into the specified area.'); 266 }) 267 }).catch(error => { 268 console.log('error: ' + error); 269 }) 270``` 271 272### writePixels<sup>7+</sup> 273 274writePixels(area: PositionArea, callback: AsyncCallback\<void>): void 275 276将PixelMap写入指定区域内,使用callback形式返回写入结果。 277 278**系统能力:** SystemCapability.Multimedia.Image.Core 279 280**参数:** 281 282| 参数名 | 类型 | 必填 | 说明 | 283| --------- | ------------------------------ | ---- | ------------------------------ | 284| area | [PositionArea](#positionarea7) | 是 | 区域,根据区域写入。 | 285| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 286 287**示例:** 288 289```js 290const area = { pixels: new ArrayBuffer(8), 291 offset: 0, 292 stride: 8, 293 region: { size: { height: 1, width: 2 }, x: 0, y: 0 } 294} 295let bufferArr = new Uint8Array(area.pixels); 296for (var i = 0; i < bufferArr.length; i++) { 297 bufferArr[i] = i + 1; 298} 299pixelmap.writePixels(area, (error) => { 300 if (error != undefined) { 301 console.info('Failed to write pixelmap into the specified area.'); 302 } else { 303 console.info('Succeeded to write pixelmap into the specified area.'); 304 } 305}) 306``` 307 308### writeBufferToPixels<sup>7+</sup> 309 310writeBufferToPixels(src: ArrayBuffer): Promise\<void> 311 312读取缓冲区中的图片数据,结果写入PixelMap中,使用Promise形式返回。 313 314**系统能力:** SystemCapability.Multimedia.Image.Core 315 316**参数:** 317 318| 参数名 | 类型 | 必填 | 说明 | 319| ------ | ----------- | ---- | -------------- | 320| src | ArrayBuffer | 是 | 图像像素数据。 | 321 322**返回值:** 323 324| 类型 | 说明 | 325| -------------- | ----------------------------------------------- | 326| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 | 327 328**示例:** 329 330```js 331const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 332let bufferArr = new Uint8Array(color); 333for (var i = 0; i < bufferArr.length; i++) { 334 bufferArr[i] = i + 1; 335} 336pixelmap.writeBufferToPixels(color).then(() => { 337 console.log("Succeeded in writing data from a buffer to a PixelMap."); 338}).catch((err) => { 339 console.error("Failed to write data from a buffer to a PixelMap."); 340}) 341``` 342 343### writeBufferToPixels<sup>7+</sup> 344 345writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback\<void>): void 346 347读取缓冲区中的图片数据,结果写入PixelMap中,使用callback形式返回。 348 349**系统能力:** SystemCapability.Multimedia.Image.Core 350 351**参数:** 352 353| 参数名 | 类型 | 必填 | 说明 | 354| -------- | -------------------- | ---- | ------------------------------ | 355| src | ArrayBuffer | 是 | 图像像素数据。 | 356| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 357 358**示例:** 359 360```js 361const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 362let bufferArr = new Uint8Array(color); 363for (var i = 0; i < bufferArr.length; i++) { 364 bufferArr[i] = i + 1; 365} 366pixelmap.writeBufferToPixels(color, function(err) { 367 if (err) { 368 console.error("Failed to write data from a buffer to a PixelMap."); 369 return; 370 } else { 371 console.log("Succeeded in writing data from a buffer to a PixelMap."); 372 } 373}); 374``` 375 376### getImageInfo<sup>7+</sup> 377 378getImageInfo(): Promise\<ImageInfo> 379 380获取图像像素信息,使用Promise形式返回获取的图像像素信息。 381 382**系统能力:** SystemCapability.Multimedia.Image.Core 383 384**返回值:** 385 386| 类型 | 说明 | 387| --------------------------------- | ----------------------------------------------------------- | 388| Promise\<[ImageInfo](#imageinfo)> | Promise实例,用于异步获取图像像素信息,失败时返回错误信息。 | 389 390**示例:** 391 392```js 393const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 394let opts = { editable: true, pixelFormat: 2, size: { height: 6, width: 8 } } 395image.createPixelMap(color, opts).then(pixelmap => { 396 if (pixelmap == undefined) { 397 console.error("Failed to obtain the image pixel map information."); 398 } 399 pixelmap.getImageInfo().then(imageInfo => { 400 if (imageInfo == undefined) { 401 console.error("Failed to obtain the image pixel map information."); 402 } 403 if (imageInfo.size.height == 4 && imageInfo.size.width == 6) { 404 console.log("Succeeded in obtaining the image pixel map information."); 405 } 406 }) 407}) 408``` 409 410### getImageInfo<sup>7+</sup> 411 412getImageInfo(callback: AsyncCallback\<ImageInfo>): void 413 414获取图像像素信息,使用callback形式返回获取的图像像素信息。 415 416**系统能力:** SystemCapability.Multimedia.Image.Core 417 418**参数:** 419 420| 参数名 | 类型 | 必填 | 说明 | 421| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | 422| callback | AsyncCallback\<[ImageInfo](#imageinfo)> | 是 | 获取图像像素信息回调,异步返回图像像素信息,失败时返回错误信息。 | 423 424**示例:** 425 426```js 427const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 428let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 429image.createPixelMap(color, opts, (err, pixelmap) => { 430 if (pixelmap == undefined) { 431 console.error("Failed to obtain the image pixel map information."); 432 } 433 pixelmap.getImageInfo((err, imageInfo) => { 434 if (imageInfo == undefined) { 435 console.error("Failed to obtain the image pixel map information."); 436 } 437 if (imageInfo.size.height == 4 && imageInfo.size.width == 6) { 438 console.log("Succeeded in obtaining the image pixel map information."); 439 } 440 }) 441}) 442``` 443 444### getBytesNumberPerRow<sup>7+</sup> 445 446getBytesNumberPerRow(): number 447 448获取图像像素每行字节数。 449 450**系统能力:** SystemCapability.Multimedia.Image.Core 451 452**返回值:** 453 454| 类型 | 说明 | 455| ------ | -------------------- | 456| number | 图像像素的行字节数。 | 457 458**示例:** 459 460```js 461const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 462let bufferArr = new Uint8Array(color); 463let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 464image.createPixelMap(color, opts, (err,pixelmap) => { 465 let rowCount = pixelmap.getBytesNumberPerRow(); 466}) 467``` 468 469### getPixelBytesNumber<sup>7+</sup> 470 471getPixelBytesNumber(): number 472 473获取图像像素的总字节数。 474 475**系统能力:** SystemCapability.Multimedia.Image.Core 476 477**返回值:** 478 479| 类型 | 说明 | 480| ------ | -------------------- | 481| number | 图像像素的总字节数。 | 482 483**示例:** 484 485```js 486let pixelBytesNumber = pixelmap.getPixelBytesNumber(); 487``` 488 489### getDensity<sup>9+</sup> 490 491getDensity():number 492 493获取当前图像像素的密度。 494 495**系统能力:** SystemCapability.Multimedia.Image.Core 496 497**返回值:** 498 499| 类型 | 说明 | 500| ------ | --------------- | 501| number | 图像像素的密度。| 502 503**示例:** 504 505```js 506let getDensity = pixelmap.getDensity(); 507``` 508 509### opacity<sup>9+</sup> 510 511opacity(rate: number, callback: AsyncCallback\<void>): void 512 513通过设置透明比率来让PixelMap达到对应的透明效果,使用callback形式返回。 514 515**系统能力:** SystemCapability.Multimedia.Image.Core 516 517**参数:** 518 519| 参数名 | 类型 | 必填 | 说明 | 520| -------- | -------------------- | ---- | ------------------------------ | 521| rate | number | 是 | 透明比率的值,取值范围:0-1。 | 522| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 523 524**示例:** 525 526```js 527var rate = 0.5; 528pixelmap.opacity(rate, (err) => { 529 if (err) { 530 console.error("Failed to set opacity."); 531 return; 532 } else { 533 console.log("Succeeded in setting opacity."); 534 } 535}) 536``` 537 538### opacity<sup>9+</sup> 539 540opacity(rate: number): Promise\<void> 541 542通过设置透明比率来让PixelMap达到对应的透明效果,使用Promise形式返回。 543 544**系统能力:** SystemCapability.Multimedia.Image.Core 545 546**参数:** 547 548| 参数名 | 类型 | 必填 | 说明 | 549| ------ | ------ | ---- | --------------------------- | 550| rate | number | 是 | 透明比率的值,取值范围:0-1。| 551 552**返回值:** 553 554| 类型 | 说明 | 555| -------------- | ----------------------------------------------- | 556| Promise\<void> | Promise实例,用于获取结果,失败时返回错误信息。 | 557 558**示例:** 559 560```js 561async function Demo() { 562 await pixelmap.opacity(0.5); 563} 564``` 565 566### createAlphaPixelmap<sup>9+</sup> 567 568createAlphaPixelmap(): Promise\<PixelMap> 569 570根据Alpha通道的信息,来生成一个仅包含Alpha通道信息的pixelmap,可用于阴影效果,使用Promise形式返回。 571 572**系统能力:** SystemCapability.Multimedia.Image.Core 573 574**返回值:** 575 576| 类型 | 说明 | 577| -------------------------------- | --------------------------- | 578| Promise\<[PixelMap](#pixelmap7)> | Promise实例,返回pixelmap。 | 579 580**示例:** 581 582```js 583async function Demo() { 584 await pixelmap.createAlphaPixelmap(); 585} 586``` 587 588### createAlphaPixelmap<sup>9+</sup> 589 590createAlphaPixelmap(callback: AsyncCallback\<PixelMap>): void 591 592根据Alpha通道的信息,来生成一个仅包含Alpha通道信息的pixelmap,可用于阴影效果,使用callback形式返回。 593 594**系统能力:** SystemCapability.Multimedia.Image.Core 595 596**参数:** 597 598| 参数名 | 类型 | 必填 | 说明 | 599| -------- | ------------------------ | ---- | ------------------------ | 600| callback | AsyncCallback\<PixelMap> | 是 | 获取回调,异步返回结果。 | 601 602**示例:** 603 604```js 605pixelmap.createAlphaPixelmap((err, alphaPixelMap) => { 606 if (alphaPixelMap == undefined) { 607 console.info('Failed to obtain new pixel map.'); 608 } else { 609 console.info('Succeed in obtaining new pixel map.'); 610 } 611}) 612``` 613 614### scale<sup>9+</sup> 615 616scale(x: number, y: number, callback: AsyncCallback\<void>): void 617 618根据输入的宽高对图片进行缩放,使用callback形式返回。 619 620**系统能力:** SystemCapability.Multimedia.Image.Core 621 622**参数:** 623 624| 参数名 | 类型 | 必填 | 说明 | 625| -------- | -------------------- | ---- | ------------------------------- | 626| x | number | 是 | 宽度的缩放值,其值为输入的倍数。| 627| y | number | 是 | 高度的缩放值,其值为输入的倍数。| 628| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 629 630**示例:** 631 632```js 633async function Demo() { 634 await pixelmap.scale(2.0, 1.0); 635} 636``` 637 638### scale<sup>9+</sup> 639 640scale(x: number, y: number): Promise\<void> 641 642根据输入的宽高对图片进行缩放,使用Promise形式返回。 643 644**系统能力:** SystemCapability.Multimedia.Image.Core 645 646**参数:** 647 648| 参数名 | 类型 | 必填 | 说明 | 649| ------ | ------ | ---- | ------------------------------- | 650| x | number | 是 | 宽度的缩放值,其值为输入的倍数。| 651| y | number | 是 | 高度的缩放值,其值为输入的倍数。| 652 653**返回值:** 654 655| 类型 | 说明 | 656| -------------- | --------------------------- | 657| Promise\<void> | Promise实例,异步返回结果。 | 658 659**示例:** 660 661```js 662async function Demo() { 663 await pixelmap.scale(2.0, 1.0); 664} 665``` 666 667### translate<sup>9+</sup> 668 669translate(x: number, y: number, callback: AsyncCallback\<void>): void 670 671根据输入的坐标对图片进行位置变换,使用callback形式返回。 672 673**系统能力:** SystemCapability.Multimedia.Image.Core 674 675**参数:** 676 677| 参数名 | 类型 | 必填 | 说明 | 678| -------- | -------------------- | ---- | ----------------------------- | 679| x | number | 是 | 区域横坐标。 | 680| y | number | 是 | 区域纵坐标。 | 681| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。| 682 683**示例:** 684 685```js 686async function Demo() { 687 await pixelmap.translate(3.0, 1.0); 688} 689``` 690 691### translate<sup>9+</sup> 692 693translate(x: number, y: number): Promise\<void> 694 695根据输入的坐标对图片进行位置变换,使用Promise形式返回。 696 697**系统能力:** SystemCapability.Multimedia.Image.Core 698 699**参数:** 700 701| 参数名 | 类型 | 必填 | 说明 | 702| ------ | ------ | ---- | ----------- | 703| x | number | 是 | 区域横坐标。| 704| y | number | 是 | 区域纵坐标。| 705 706**返回值:** 707 708| 类型 | 说明 | 709| -------------- | --------------------------- | 710| Promise\<void> | Promise实例,异步返回结果。 | 711 712**示例:** 713 714```js 715async function Demo() { 716 await pixelmap.translate(3.0, 1.0); 717} 718``` 719 720### rotate<sup>9+</sup> 721 722rotate(angle: number, callback: AsyncCallback\<void>): void 723 724根据输入的角度对图片进行旋转,使用callback形式返回。 725 726**系统能力:** SystemCapability.Multimedia.Image.Core 727 728**参数:** 729 730| 参数名 | 类型 | 必填 | 说明 | 731| -------- | -------------------- | ---- | ----------------------------- | 732| angle | number | 是 | 图片旋转的角度。 | 733| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。| 734 735**示例:** 736 737```js 738var angle = 90.0; 739pixelmap.rotate(angle, (err) => { 740 if (err) { 741 console.error("Failed to set rotation."); 742 return; 743 } else { 744 console.log("Succeeded in setting rotation."); 745 } 746}) 747``` 748 749### rotate<sup>9+</sup> 750 751rotate(angle: number): Promise\<void> 752 753根据输入的角度对图片进行旋转,使用Promise形式返回。 754 755**系统能力:** SystemCapability.Multimedia.Image.Core 756 757**参数:** 758 759| 参数名 | 类型 | 必填 | 说明 | 760| ------ | ------ | ---- | ----------------------------- | 761| angle | number | 是 | 图片旋转的角度。 | 762 763**返回值:** 764 765| 类型 | 说明 | 766| -------------- | --------------------------- | 767| Promise\<void> | Promise实例,异步返回结果。 | 768 769**示例:** 770 771```js 772async function Demo() { 773 await pixelmap.rotate(90.0); 774} 775``` 776 777### flip<sup>9+</sup> 778 779flip(horizontal: boolean, vertical: boolean, callback: AsyncCallback\<void>): void 780 781根据输入的条件对图片进行翻转,使用callback形式返回。 782 783**系统能力:** SystemCapability.Multimedia.Image.Core 784 785**参数:** 786 787| 参数名 | 类型 | 必填 | 说明 | 788| ---------- | -------------------- | ---- | ----------------------------- | 789| horizontal | boolean | 是 | 水平翻转。 | 790| vertical | boolean | 是 | 垂直翻转。 | 791| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。| 792 793**示例:** 794 795```js 796async function Demo() { 797 await pixelmap.flip(false, true); 798} 799``` 800 801### flip<sup>9+</sup> 802 803flip(horizontal: boolean, vertical: boolean): Promise\<void> 804 805根据输入的条件对图片进行翻转,使用Promise形式返回。 806 807**系统能力:** SystemCapability.Multimedia.Image.Core 808 809**参数:** 810 811| 参数名 | 类型 | 必填 | 说明 | 812| ---------- | ------- | ---- | --------- | 813| horizontal | boolean | 是 | 水平翻转。| 814| vertical | boolean | 是 | 垂直翻转。| 815 816**返回值:** 817 818| 类型 | 说明 | 819| -------------- | --------------------------- | 820| Promise\<void> | Promise实例,异步返回结果。 | 821 822**示例:** 823 824```js 825async function Demo() { 826 await pixelmap.flip(false, true); 827} 828``` 829 830### crop<sup>9+</sup> 831 832crop(region: Region, callback: AsyncCallback\<void>): void 833 834根据输入的尺寸对图片进行裁剪,使用callback形式返回。 835 836**系统能力:** SystemCapability.Multimedia.Image.Core 837 838**参数:** 839 840| 参数名 | 类型 | 必填 | 说明 | 841| -------- | -------------------- | ---- | ----------------------------- | 842| region | [Region](#region7) | 是 | 裁剪的尺寸。 | 843| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。| 844 845**示例:** 846 847```js 848async function Demo() { 849 await pixelmap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } }); 850} 851``` 852 853### crop<sup>9+</sup> 854 855crop(region: Region): Promise\<void> 856 857根据输入的尺寸对图片进行裁剪,使用Promise形式返回。 858 859**系统能力:** SystemCapability.Multimedia.Image.Core 860 861**参数:** 862 863| 参数名 | 类型 | 必填 | 说明 | 864| ------ | ------------------ | ---- | ----------- | 865| region | [Region](#region7) | 是 | 裁剪的尺寸。| 866 867**返回值:** 868 869| 类型 | 说明 | 870| -------------- | --------------------------- | 871| Promise\<void> | Promise实例,异步返回结果。 | 872 873**示例:** 874 875```js 876async function Demo() { 877 await pixelmap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } }); 878} 879``` 880 881### release<sup>7+</sup> 882 883release():Promise\<void> 884 885释放PixelMap对象,使用Promise形式返回释放结果。 886 887**系统能力:** SystemCapability.Multimedia.Image.Core 888 889**返回值:** 890 891| 类型 | 说明 | 892| -------------- | ------------------------------- | 893| Promise\<void> | Promise实例,异步返回释放结果。 | 894 895**示例:** 896 897```js 898pixelmap.release().then(() => { 899 console.log('Succeeded in releasing pixelmap object.'); 900}).catch(error => { 901 console.log('Failed to release pixelmap object.'); 902}) 903``` 904 905### release<sup>7+</sup> 906 907release(callback: AsyncCallback\<void>): void 908 909释放PixelMap对象,使用callback形式返回释放结果。 910 911**系统能力:** SystemCapability.Multimedia.Image.Core 912 913**参数:** 914 915| 参数名 | 类型 | 必填 | 说明 | 916| -------- | -------------------- | ---- | ------------------ | 917| callback | AsyncCallback\<void> | 是 | 异步返回释放结果。 | 918 919**示例:** 920 921```js 922pixelmap.release(() => { 923 console.log('Succeeded in releasing pixelmap object.'); 924}) 925``` 926 927## image.createImageSource 928 929createImageSource(uri: string): ImageSource 930 931通过传入的uri创建图片源实例。 932 933**系统能力:** SystemCapability.Multimedia.Image.ImageSource 934 935**参数:** 936 937| 参数名 | 类型 | 必填 | 说明 | 938| ------ | ------ | ---- | ---------------------------------- | 939| uri | string | 是 | 图片路径,当前仅支持应用沙箱路径。</br>当前支持格式有:.jpg .png .gif .bmp .webp RAW。 | 940 941**返回值:** 942 943| 类型 | 说明 | 944| --------------------------- | -------------------------------------------- | 945| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 | 946 947**示例:** 948 949```js 950//Stage模型 951const context = getContext(this); 952const path = context.cacheDir() + "/test.jpg"; 953const imageSourceApi = image.createImageSource(path); 954``` 955 956```js 957//FA模型 958import featureAbility from '@ohos.ability.featureAbility'; 959 960const context = featureAbility.getContext(); 961const path = context.getCacheDir() + "/test.jpg"; 962const imageSourceApi = image.createImageSource(path); 963``` 964 965## image.createImageSource<sup>9+</sup> 966 967createImageSource(uri: string, options: SourceOptions): ImageSource 968 969通过传入的uri创建图片源实例。 970 971**系统能力:** SystemCapability.Multimedia.Image.ImageSource 972 973**参数:** 974 975| 参数名 | 类型 | 必填 | 说明 | 976| ------- | ------------------------------- | ---- | ----------------------------------- | 977| uri | string | 是 | 图片路径,当前仅支持应用沙箱路径。</br>当前支持格式有:.jpg .png .gif .bmp .webp RAW。 | 978| options | [SourceOptions](#sourceoptions9) | 是 | 图片属性,包括图片序号与默认属性值。| 979 980**返回值:** 981 982| 类型 | 说明 | 983| --------------------------- | -------------------------------------------- | 984| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 | 985 986**示例:** 987 988```js 989var sourceOptions = { sourceDensity: 120 }; 990let imageSource = image.createImageSource('test.png', sourceOptions); 991``` 992 993## image.createImageSource<sup>7+</sup> 994 995createImageSource(fd: number): ImageSource 996 997通过传入文件描述符来创建图片源实例。 998 999**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1000 1001**参数:** 1002 1003| 参数名 | 类型 | 必填 | 说明 | 1004| ------ | ------ | ---- | ------------- | 1005| fd | number | 是 | 文件描述符fd。| 1006 1007**返回值:** 1008 1009| 类型 | 说明 | 1010| --------------------------- | -------------------------------------------- | 1011| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 | 1012 1013**示例:** 1014 1015```js 1016const imageSourceApi = image.createImageSource(0); 1017``` 1018 1019## image.createImageSource<sup>9+</sup> 1020 1021createImageSource(fd: number, options: SourceOptions): ImageSource 1022 1023通过传入文件描述符来创建图片源实例。 1024 1025**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1026 1027**参数:** 1028 1029| 参数名 | 类型 | 必填 | 说明 | 1030| ------- | ------------------------------- | ---- | ----------------------------------- | 1031| fd | number | 是 | 文件描述符fd。 | 1032| options | [SourceOptions](#sourceoptions9) | 是 | 图片属性,包括图片序号与默认属性值。| 1033 1034**返回值:** 1035 1036| 类型 | 说明 | 1037| --------------------------- | -------------------------------------------- | 1038| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 | 1039 1040**示例:** 1041 1042```js 1043var sourceOptions = { sourceDensity: 120 }; 1044const imageSourceApi = image.createImageSource(0, sourceOptions); 1045``` 1046 1047## image.createImageSource<sup>9+</sup> 1048 1049createImageSource(buf: ArrayBuffer): ImageSource 1050 1051通过缓冲区创建图片源实例。 1052 1053**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1054 1055**参数:** 1056 1057| 参数名 | 类型 | 必填 | 说明 | 1058| ------ | ----------- | ---- | ---------------- | 1059| buf | ArrayBuffer | 是 | 图像缓冲区数组。 | 1060 1061**示例:** 1062 1063```js 1064const buf = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 1065const imageSourceApi = image.createImageSource(buf); 1066``` 1067 1068## image.createImageSource<sup>9+</sup> 1069 1070createImageSource(buf: ArrayBuffer, options: SourceOptions): ImageSource 1071 1072通过缓冲区创建图片源实例。 1073 1074**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1075 1076**参数:** 1077 1078| 参数名 | 类型 | 必填 | 说明 | 1079| ------ | -------------------------------- | ---- | ------------------------------------ | 1080| buf | ArrayBuffer | 是 | 图像缓冲区数组。 | 1081| options | [SourceOptions](#sourceoptions9) | 是 | 图片属性,包括图片序号与默认属性值。 | 1082 1083**返回值:** 1084 1085| 类型 | 说明 | 1086| --------------------------- | -------------------------------------------- | 1087| [ImageSource](#imagesource) | 返回ImageSource类实例,失败时返回undefined。 | 1088 1089**示例:** 1090 1091```js 1092const data = new ArrayBuffer(112); 1093const imageSourceApi = image.createImageSource(data); 1094``` 1095 1096## image.CreateIncrementalSource<sup>9+</sup> 1097 1098CreateIncrementalSource(buf: ArrayBuffer): ImageSource 1099 1100通过缓冲区以增量的方式创建图片源实例。 1101 1102**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1103 1104**参数:** 1105 1106| 参数名 | 类型 | 必填 | 说明 | 1107| ------- | ------------| ---- | ----------| 1108| buf | ArrayBuffer | 是 | 增量数据。| 1109 1110**返回值:** 1111 1112| 类型 | 说明 | 1113| --------------------------- | --------------------------------- | 1114| [ImageSource](#imagesource) | 返回图片源,失败时返回undefined。 | 1115 1116**示例:** 1117 1118```js 1119const buf = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 1120const imageSourceIncrementalSApi = image.CreateIncrementalSource(buf); 1121``` 1122 1123## image.CreateIncrementalSource<sup>9+</sup> 1124 1125CreateIncrementalSource(buf: ArrayBuffer, options?: SourceOptions): ImageSource 1126 1127通过缓冲区以增量的方式创建图片源实例。 1128 1129**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1130 1131**参数:** 1132 1133| 参数名 | 类型 | 必填 | 说明 | 1134| ------- | ------------------------------- | ---- | ------------------------------------ | 1135| buf | ArrayBuffer | 是 | 增量数据。 | 1136| options | [SourceOptions](#sourceoptions9) | 否 | 图片属性,包括图片序号与默认属性值。 | 1137 1138**返回值:** 1139 1140| 类型 | 说明 | 1141| --------------------------- | --------------------------------- | 1142| [ImageSource](#imagesource) | 返回图片源,失败时返回undefined。 | 1143 1144**示例:** 1145 1146```js 1147const buf = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 1148const imageSourceIncrementalSApi = image.CreateIncrementalSource(buf); 1149``` 1150 1151## ImageSource 1152 1153图片源类,用于获取图片相关信息。在调用ImageSource的方法前,需要先通过createImageSource构建一个ImageSource实例。 1154 1155### 属性 1156 1157**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1158 1159| 名称 | 类型 | 可读 | 可写 | 说明 | 1160| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | 1161| supportedFormats | Array\<string> | 是 | 否 | 支持的图片格式,包括:png,jpeg,bmp,gif,webp,RAW。 | 1162 1163### getImageInfo 1164 1165getImageInfo(index: number, callback: AsyncCallback\<ImageInfo>): void 1166 1167获取指定序号的图片信息,使用callback形式返回图片信息。 1168 1169**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1170 1171**参数:** 1172 1173| 参数名 | 类型 | 必填 | 说明 | 1174| -------- | -------------------------------------- | ---- | ---------------------------------------- | 1175| index | number | 是 | 创建图片源时的序号。 | 1176| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是 | 获取图片信息回调,异步返回图片信息对象。 | 1177 1178**示例:** 1179 1180```js 1181imageSourceApi.getImageInfo(0,(error, imageInfo) => { 1182 if(error) { 1183 console.log('getImageInfo failed.'); 1184 } else { 1185 console.log('getImageInfo succeeded.'); 1186 } 1187}) 1188``` 1189 1190### getImageInfo 1191 1192getImageInfo(callback: AsyncCallback\<ImageInfo>): void 1193 1194获取图片信息,使用callback形式返回图片信息。 1195 1196**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1197 1198**参数:** 1199 1200| 参数名 | 类型 | 必填 | 说明 | 1201| -------- | -------------------------------------- | ---- | ---------------------------------------- | 1202| callback | AsyncCallback<[ImageInfo](#imageinfo)> | 是 | 获取图片信息回调,异步返回图片信息对象。 | 1203 1204**示例:** 1205 1206```js 1207imageSourceApi.getImageInfo(imageInfo => { 1208 console.log('Succeeded in obtaining the image information.'); 1209}) 1210``` 1211 1212### getImageInfo 1213 1214getImageInfo(index?: number): Promise\<ImageInfo> 1215 1216获取图片信息,使用Promise形式返回图片信息。 1217 1218**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1219 1220**参数:** 1221 1222| 参数名| 类型 | 必填 | 说明 | 1223| ----- | ------ | ---- | ------------------------------------- | 1224| index | number | 否 | 创建图片源时的序号,不选择时默认为0。 | 1225 1226**返回值:** 1227 1228| 类型 | 说明 | 1229| -------------------------------- | ---------------------- | 1230| Promise<[ImageInfo](#imageinfo)> | 返回获取到的图片信息。 | 1231 1232**示例:** 1233 1234```js 1235imageSourceApi.getImageInfo(0) 1236 .then(imageInfo => { 1237 console.log('Succeeded in obtaining the image information.'); 1238 }).catch(error => { 1239 console.log('Failed to obtain the image information.'); 1240 }) 1241``` 1242 1243### getImageProperty<sup>7+</sup> 1244 1245getImageProperty(key:string, options?: GetImagePropertyOptions): Promise\<string> 1246 1247获取图片中给定索引处图像的指定属性键的值,用Promise形式返回结果。 1248 1249**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1250 1251 **参数:** 1252 1253| 参数名 | 类型 | 必填 | 说明 | 1254| ------- | ---------------------------------------------------- | ---- | ------------------------------------ | 1255| key | string | 是 | 图片属性名。 | 1256| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | 否 | 图片属性,包括图片序号与默认属性值。 | 1257 1258**返回值:** 1259 1260| 类型 | 说明 | 1261| ---------------- | ----------------------------------------------------------------- | 1262| Promise\<string> | Promise实例,用于异步获取图片属性值,如获取失败则返回属性默认值。 | 1263 1264**示例:** 1265 1266```js 1267imageSourceApi.getImageProperty("BitsPerSample") 1268 .then(data => { 1269 console.log('Succeeded in getting the value of the specified attribute key of the image.'); 1270 }) 1271``` 1272 1273### getImageProperty<sup>7+</sup> 1274 1275getImageProperty(key:string, callback: AsyncCallback\<string>): void 1276 1277获取图片中给定索引处图像的指定属性键的值,用callback形式返回结果。 1278 1279**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1280 1281 **参数:** 1282 1283| 参数名 | 类型 | 必填 | 说明 | 1284| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 1285| key | string | 是 | 图片属性名。 | 1286| callback | AsyncCallback\<string> | 是 | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。 | 1287 1288**示例:** 1289 1290```js 1291imageSourceApi.getImageProperty("BitsPerSample",(error,data) => { 1292 if(error) { 1293 console.log('Failed to get the value of the specified attribute key of the image.'); 1294 } else { 1295 console.log('Succeeded in getting the value of the specified attribute key of the image.'); 1296 } 1297}) 1298``` 1299 1300### getImageProperty<sup>7+</sup> 1301 1302getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback\<string>): void 1303 1304获取图片指定属性键的值,callback形式返回结果。 1305 1306**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1307 1308**参数:** 1309 1310| 参数名 | 类型 | 必填 | 说明 | 1311| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------- | 1312| key | string | 是 | 图片属性名。 | 1313| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | 是 | 图片属性,包括图片序号与默认属性值。 | 1314| callback | AsyncCallback\<string> | 是 | 获取图片属性回调,返回图片属性值,如获取失败则返回属性默认值。| 1315 1316**示例:** 1317 1318```js 1319let property = { index: 0, defaultValue: '9999' } 1320imageSourceApi.getImageProperty("BitsPerSample",property,(error,data) => { 1321 if(error) { 1322 console.log('Failed to get the value of the specified attribute key of the image.'); 1323 } else { 1324 console.log('Succeeded in getting the value of the specified attribute key of the image.'); 1325 } 1326}) 1327``` 1328 1329### modifyImageProperty<sup>9+</sup> 1330 1331modifyImageProperty(key: string, value: string): Promise\<void> 1332 1333通过指定的键修改图片属性的值,使用Promise形式返回结果。 1334 1335**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1336 1337**参数:** 1338 1339| 参数名 | 类型 | 必填 | 说明 | 1340| ------- | ------ | ---- | ------------ | 1341| key | string | 是 | 图片属性名。 | 1342| value | string | 是 | 属性值。 | 1343 1344**返回值:** 1345 1346| 类型 | 说明 | 1347| -------------- | --------------------------- | 1348| Promise\<void> | Promise实例,异步返回结果。 | 1349 1350**示例:** 1351 1352```js 1353imageSourceApi.modifyImageProperty("ImageWidth", "120").then(() => { 1354 const w = imageSourceApi.getImageProperty("ImageWidth") 1355 console.info('w', w); 1356}) 1357``` 1358 1359### modifyImageProperty<sup>9+</sup> 1360 1361modifyImageProperty(key: string, value: string, callback: AsyncCallback\<void>): void 1362 1363通过指定的键修改图片属性的值,callback形式返回结果。 1364 1365**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1366 1367**参数:** 1368 1369| 参数名 | 类型 | 必填 | 说明 | 1370| -------- | ------------------- | ---- | ------------------------------ | 1371| key | string | 是 | 图片属性名。 | 1372| value | string | 是 | 属性值。 | 1373| callback | AsyncCallback\<void> | 是 | 修改属性值,callback返回结果。 | 1374 1375**示例:** 1376 1377```js 1378imageSourceApi.modifyImageProperty("ImageWidth", "120",() => {}) 1379``` 1380 1381### updateData<sup>9+</sup> 1382 1383updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number): Promise\<void> 1384 1385更新增量数据,使用Promise形式返回结果。 1386 1387**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1388 1389**参数:** 1390 1391| 参数名 | 类型 | 必填 | 说明 | 1392| ---------- | ----------- | ---- | ------------ | 1393| buf | ArrayBuffer | 是 | 增量数据。 | 1394| isFinished | boolean | 是 | 是否更新完。 | 1395| value | number | 是 | 偏移量。 | 1396| length | number | 是 | 数组长。 | 1397 1398**返回值:** 1399 1400| 类型 | 说明 | 1401| -------------- | -------------------------- | 1402| Promise\<void> | Promise实例,异步返回结果。| 1403 1404**示例:** 1405 1406```js 1407const array = new ArrayBuffer(100); 1408imageSourceApi.updateData(array, false, 0, 10).then(data => { 1409 console.info('Succeeded in updating data.'); 1410}) 1411``` 1412 1413 1414### updateData<sup>9+</sup> 1415 1416updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number, callback: AsyncCallback\<void>): void 1417 1418更新增量数据,callback形式返回结果。 1419 1420**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1421 1422**参数:** 1423 1424| 参数名 | 类型 | 必填 | 说明 | 1425| ---------- | ------------------- | ---- | -------------------- | 1426| buf | ArrayBuffer | 是 | 增量数据。 | 1427| isFinished | boolean | 是 | 是否更新完。 | 1428| value | number | 是 | 偏移量。 | 1429| length | number | 是 | 数组长。 | 1430| callback | AsyncCallback\<void> | 是 | 回调表示成功或失败。 | 1431 1432**示例:** 1433 1434```js 1435const array = new ArrayBuffer(100); 1436imageSourceApi.updateData(array, false, 0, 10,(error,data )=> { 1437 if(data !== undefined){ 1438 console.info('Succeeded in updating data.'); 1439 } 1440}) 1441``` 1442 1443### createPixelMap<sup>7+</sup> 1444 1445createPixelMap(options?: DecodingOptions): Promise\<PixelMap> 1446 1447通过图片解码参数创建PixelMap对象。 1448 1449**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1450 1451**参数:** 1452 1453| 参数名 | 类型 | 必填 | 说明 | 1454| ------- | ------------------------------------ | ---- | ---------- | 1455| options | [DecodingOptions](#decodingoptions7) | 否 | 解码参数。 | 1456 1457**返回值:** 1458 1459| 类型 | 说明 | 1460| -------------------------------- | --------------------- | 1461| Promise\<[PixelMap](#pixelmap7)> | 异步返回Promise对象。 | 1462 1463**示例:** 1464 1465```js 1466imageSourceApi.createPixelMap().then(pixelmap => { 1467 console.log('Succeeded in creating pixelmap object through image decoding parameters.'); 1468}).catch(error => { 1469 console.log('Failed to create pixelmap object through image decoding parameters.'); 1470}) 1471``` 1472 1473### createPixelMap<sup>7+</sup> 1474 1475createPixelMap(callback: AsyncCallback\<PixelMap>): void 1476 1477通过默认参数创建PixelMap对象,使用callback形式返回结果。 1478 1479**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1480 1481**参数:** 1482 1483| 参数名 | 类型 | 必填 | 说明 | 1484| -------- | ------------------------------------- | ---- | -------------------------- | 1485| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是 | 通过回调返回PixelMap对象。 | 1486 1487**示例:** 1488 1489```js 1490imageSourceApi.createPixelMap((err, pixelmap) => { 1491 console.info('Succeeded in creating pixelmap object.'); 1492 }) 1493``` 1494 1495### createPixelMap<sup>7+</sup> 1496 1497createPixelMap(options: DecodingOptions, callback: AsyncCallback\<PixelMap>): void 1498 1499通过图片解码参数创建PixelMap对象。 1500 1501**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1502 1503**参数:** 1504 1505| 参数名 | 类型 | 必填 | 说明 | 1506| -------- | ------------------------------------- | ---- | -------------------------- | 1507| options | [DecodingOptions](#decodingoptions7) | 是 | 解码参数。 | 1508| callback | AsyncCallback<[PixelMap](#pixelmap7)> | 是 | 通过回调返回PixelMap对象。 | 1509 1510**示例:** 1511 1512```js 1513let decodingOptions = { 1514 sampleSize: 1, 1515 editable: true, 1516 desiredSize: { width: 1, height: 2 }, 1517 rotate: 10, 1518 desiredPixelFormat: 3, 1519 desiredRegion: { size: { height: 1, width: 2 }, x: 0, y: 0 }, 1520 index: 0 1521}; 1522imageSourceApi.createPixelMap(decodingOptions, pixelmap => { 1523 console.log('Succeeded in creating pixelmap object.'); 1524}) 1525``` 1526 1527### release 1528 1529release(callback: AsyncCallback\<void>): void 1530 1531释放图片源实例,使用callback形式返回结果。 1532 1533**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1534 1535**参数:** 1536 1537| 参数名 | 类型 | 必填 | 说明 | 1538| -------- | -------------------- | ---- | ---------------------------------- | 1539| callback | AsyncCallback\<void> | 是 | 资源释放回调,失败时返回错误信息。 | 1540 1541**示例:** 1542 1543```js 1544imageSourceApi.release(() => { 1545 console.log('release succeeded.'); 1546}) 1547``` 1548 1549### release 1550 1551release(): Promise\<void> 1552 1553释放图片源实例,使用Promise形式返回结果。 1554 1555**系统能力:** SystemCapability.Multimedia.Image.ImageSource 1556 1557**返回值:** 1558 1559| 类型 | 说明 | 1560| -------------- | --------------------------- | 1561| Promise\<void> | Promise实例,异步返回结果。 | 1562 1563**示例:** 1564 1565```js 1566imageSourceApi.release().then(()=>{ 1567 console.log('Succeeded in releasing the image source instance.'); 1568}).catch(error => { 1569 console.log('Failed to release the image source instance.'); 1570}) 1571``` 1572 1573## image.createImagePacker 1574 1575createImagePacker(): ImagePacker 1576 1577创建ImagePacker实例。 1578 1579**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1580 1581**返回值:** 1582 1583| 类型 | 说明 | 1584| --------------------------- | --------------------- | 1585| [ImagePacker](#imagepacker) | 返回ImagePacker实例。 | 1586 1587**示例:** 1588 1589```js 1590const imagePackerApi = image.createImagePacker(); 1591``` 1592 1593## ImagePacker 1594 1595图片打包器类,用于图片压缩和打包。在调用ImagePacker的方法前,需要先通过createImagePacker构建一个ImagePacker实例,当前支持格式有:jpeg webp。 1596 1597### 属性 1598 1599**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1600 1601| 名称 | 类型 | 可读 | 可写 | 说明 | 1602| ---------------- | -------------- | ---- | ---- | -------------------------- | 1603| supportedFormats | Array\<string> | 是 | 否 | 图片打包支持的格式,jpeg。 | 1604 1605### packing 1606 1607packing(source: ImageSource, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void 1608 1609图片压缩或重新打包,使用callback形式返回结果。 1610 1611**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1612 1613**参数:** 1614 1615| 参数名 | 类型 | 必填 | 说明 | 1616| -------- | ---------------------------------- | ---- | ---------------------------------- | 1617| source | [ImageSource](#imagesource) | 是 | 打包的图片源。 | 1618| option | [PackingOption](#packingoption) | 是 | 设置打包参数。 | 1619| callback | AsyncCallback\<ArrayBuffer> | 是 | 获取图片打包回调,返回打包后数据。 | 1620 1621**示例:** 1622 1623```js 1624const imageSourceApi = image.createImageSource(0); 1625let packOpts = { format:"image/jpeg", quality:98 }; 1626imagePackerApi.packing(imageSourceApi, packOpts, data => {}) 1627``` 1628 1629### packing 1630 1631packing(source: ImageSource, option: PackingOption): Promise\<ArrayBuffer> 1632 1633图片压缩或重新打包,使用Promise形式返回结果。 1634 1635**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1636 1637**参数:** 1638 1639| 参数名 | 类型 | 必填 | 说明 | 1640| ------ | ------------------------------- | ---- | -------------- | 1641| source | [ImageSource](#imagesource) | 是 | 打包的图片源。 | 1642| option | [PackingOption](#packingoption) | 是 | 设置打包参数。 | 1643 1644**返回值:** 1645 1646| 类型 | 说明 | 1647| ---------------------------- | --------------------------------------------- | 1648| Promise\<ArrayBuffer> | Promise实例,用于异步获取压缩或打包后的数据。 | 1649 1650**示例:** 1651 1652```js 1653const imageSourceApi = image.createImageSource(0); 1654let packOpts = { format:"image/jpeg", quality:98 } 1655imagePackerApi.packing(imageSourceApi, packOpts) 1656 .then( data => { 1657 console.log('packing succeeded.'); 1658 }).catch(error => { 1659 console.log('packing failed.'); 1660 }) 1661``` 1662 1663### packing<sup>8+</sup> 1664 1665packing(source: PixelMap, option: PackingOption, callback: AsyncCallback\<ArrayBuffer>): void 1666 1667图片压缩或重新打包,使用callback形式返回结果。 1668 1669**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1670 1671**参数:** 1672 1673| 参数名 | 类型 | 必填 | 说明 | 1674| -------- | ------------------------------- | ---- | ---------------------------------- | 1675| source | [PixelMap](#pixelmap) | 是 | 打包的PixelMap资源。 | 1676| option | [PackingOption](#packingoption) | 是 | 设置打包参数。 | 1677| callback | AsyncCallback\<ArrayBuffer> | 是 | 获取图片打包回调,返回打包后数据。 | 1678 1679**示例:** 1680 1681```js 1682const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 1683let bufferArr = new Uint8Array(color); 1684let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 1685image.createPixelMap(color, opts).then((pixelmap) => { 1686 let packOpts = { format:"image/jpeg", quality:98 } 1687 imagePackerApi.packing(pixelmap, packOpts, data => { 1688 console.log('Succeeded in packing the image.'); 1689 }) 1690}) 1691``` 1692 1693### packing<sup>8+</sup> 1694 1695packing(source: PixelMap, option: PackingOption): Promise\<ArrayBuffer> 1696 1697图片压缩或重新打包,使用Promise形式返回结果。 1698 1699**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1700 1701**参数:** 1702 1703| 参数名 | 类型 | 必填 | 说明 | 1704| ------ | ------------------------------- | ---- | ------------------ | 1705| source | [PixelMap](#pixelmap) | 是 | 打包的PixelMap源。 | 1706| option | [PackingOption](#packingoption) | 是 | 设置打包参数。 | 1707 1708**返回值:** 1709 1710| 类型 | 说明 | 1711| --------------------- | -------------------------------------------- | 1712| Promise\<ArrayBuffer> | Promise实例,用于异步获取压缩或打包后的数据。| 1713 1714**示例:** 1715 1716```js 1717const color = new ArrayBuffer(96); //96为需要创建的像素buffer大小,取值为:height * width *4 1718let bufferArr = new Uint8Array(color); 1719let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } } 1720image.createPixelMap(color, opts).then((pixelmap) => { 1721 let packOpts = { format:"image/jpeg", quality:98 } 1722 imagePackerApi.packing(pixelmap, packOpts) 1723 .then( data => { 1724 console.log('Succeeded in packing the image.'); 1725 }).catch(error => { 1726 console.log('Failed to pack the image..'); 1727 }) 1728}) 1729``` 1730 1731### release 1732 1733release(callback: AsyncCallback\<void>): void 1734 1735释放图片打包实例,使用callback形式返回结果。 1736 1737**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1738 1739**参数:** 1740 1741| 参数名 | 类型 | 必填 | 说明 | 1742| -------- | -------------------- | ---- | ------------------------------ | 1743| callback | AsyncCallback\<void> | 是 | 释放回调,失败时返回错误信息。 | 1744 1745**示例:** 1746 1747```js 1748imagePackerApi.release(()=>{ 1749 console.log('Succeeded in releasing image packaging.'); 1750}) 1751``` 1752 1753### release 1754 1755release(): Promise\<void> 1756 1757释放图片打包实例,使用Promise形式返回释放结果。 1758 1759**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 1760 1761**返回值:** 1762 1763| 类型 | 说明 | 1764| -------------- | ------------------------------------------------------ | 1765| Promise\<void> | Promise实例,用于异步获取释放结果,失败时返回错误信息。| 1766 1767**示例:** 1768 1769```js 1770imagePackerApi.release().then(()=>{ 1771 console.log('Succeeded in releasing image packaging.'); 1772}).catch((error)=>{ 1773 console.log('Failed to release image packaging.'); 1774}) 1775``` 1776 1777## image.createImageReceiver<sup>9+</sup> 1778 1779createImageReceiver(width: number, height: number, format: number, capacity: number): ImageReceiver 1780 1781通过宽、高、图片格式、容量创建ImageReceiver实例。 1782 1783**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1784 1785**参数:** 1786 1787| 参数名 | 类型 | 必填 | 说明 | 1788| -------- | ------ | ---- | ---------------------- | 1789| width | number | 是 | 图像的默认宽度。 | 1790| height | number | 是 | 图像的默认高度。 | 1791| format | number | 是 | 图像格式,取值为[ImageFormat](#imageformat9)常量(目前仅支持 ImageFormat:JPEG 和 4)。 | 1792| capacity | number | 是 | 同时访问的最大图像数。 | 1793 1794**返回值:** 1795 1796| 类型 | 说明 | 1797| -------------------------------- | --------------------------------------- | 1798| [ImageReceiver](#imagereceiver9) | 如果操作成功,则返回ImageReceiver实例。 | 1799 1800**示例:** 1801 1802```js 1803var receiver = image.createImageReceiver(8192, 8, 2000, 8); 1804``` 1805 1806## ImageReceiver<sup>9+</sup> 1807 1808图像接收类,用于获取组件surface id,接收最新的图片和读取下一张图片,以及释放ImageReceiver实例。 1809 1810在调用以下方法前需要先创建ImageReceiver实例。 1811 1812### 属性 1813 1814**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1815 1816| 名称 | 类型 | 可读 | 可写 | 说明 | 1817| -------- | ---------------------------- | ---- | ---- | ------------------ | 1818| size | [Size](#size) | 是 | 否 | 图片大小。 | 1819| capacity | number | 是 | 否 | 同时访问的图像数。 | 1820| format | [ImageFormat](#imageformat9) | 是 | 否 | 图像格式。 | 1821 1822### getReceivingSurfaceId<sup>9+</sup> 1823 1824getReceivingSurfaceId(callback: AsyncCallback\<string>): void 1825 1826用于获取一个surface id供Camera或其他组件使用。使用callback返回结果。 1827 1828**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1829 1830**参数:** 1831 1832| 参数名 | 类型 | 必填 | 说明 | 1833| -------- | ---------------------- | ---- | -------------------------- | 1834| callback | AsyncCallback\<string> | 是 | 回调函数,返回surface id。 | 1835 1836**示例:** 1837 1838```js 1839receiver.getReceivingSurfaceId((err, id) => { 1840 if(err) { 1841 console.log('getReceivingSurfaceId failed.'); 1842 } else { 1843 console.log('getReceivingSurfaceId succeeded.'); 1844 } 1845}); 1846``` 1847 1848### getReceivingSurfaceId<sup>9+</sup> 1849 1850getReceivingSurfaceId(): Promise\<string> 1851 1852用于获取一个surface id供Camera或其他组件使用。使用promise返回结果。 1853 1854**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1855 1856**返回值:** 1857 1858| 类型 | 说明 | 1859| ---------------- | -------------------- | 1860| Promise\<string> | 异步返回surface id。 | 1861 1862**示例:** 1863 1864```js 1865receiver.getReceivingSurfaceId().then( id => { 1866 console.log('getReceivingSurfaceId succeeded.'); 1867}).catch(error => { 1868 console.log('getReceivingSurfaceId failed.'); 1869}) 1870``` 1871 1872### readLatestImage<sup>9+</sup> 1873 1874readLatestImage(callback: AsyncCallback\<Image>): void 1875 1876从ImageReceiver读取最新的图片,并使用callback返回结果。 1877 1878**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1879 1880**参数:** 1881 1882| 参数名 | 类型 | 必填 | 说明 | 1883| -------- | ------------------------------- | ---- | ------------------------ | 1884| callback | AsyncCallback<[Image](#image9)> | 是 | 回调函数,返回最新图像。 | 1885 1886**示例:** 1887 1888```js 1889receiver.readLatestImage((err, img) => { 1890 if(err) { 1891 console.log('readLatestImage failed.'); 1892 } else { 1893 console.log('readLatestImage succeeded.'); 1894 } 1895}); 1896``` 1897 1898### readLatestImage<sup>9+</sup> 1899 1900readLatestImage(): Promise\<Image> 1901 1902从ImageReceiver读取最新的图片,并使用promise返回结果。 1903 1904**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1905 1906**返回值:** 1907 1908| 类型 | 说明 | 1909| ------------------------- | ------------------ | 1910| Promise<[Image](#image9)> | 异步返回最新图片。 | 1911 1912**示例:** 1913 1914```js 1915receiver.readLatestImage().then(img => { 1916 console.log('readLatestImage succeeded.'); 1917}).catch(error => { 1918 console.log('readLatestImage failed.'); 1919}) 1920``` 1921 1922### readNextImage<sup>9+</sup> 1923 1924readNextImage(callback: AsyncCallback\<Image>): void 1925 1926从ImageReceiver读取下一张图片,并使用callback返回结果。 1927 1928**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1929 1930**参数:** 1931 1932| 参数名 | 类型 | 必填 | 说明 | 1933| -------- | ------------------------------- | ---- | -------------------------- | 1934| callback | AsyncCallback<[Image](#image9)> | 是 | 回调函数,返回下一张图片。 | 1935 1936**示例:** 1937 1938```js 1939receiver.readNextImage((err, img) => { 1940 if(err) { 1941 console.log('readNextImage failed.'); 1942 } else { 1943 console.log('readNextImage succeeded.'); 1944 } 1945}); 1946``` 1947 1948### readNextImage<sup>9+</sup> 1949 1950readNextImage(): Promise\<Image> 1951 1952从ImageReceiver读取下一张图片,并使用promise返回结果。 1953 1954**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1955 1956**返回值:** 1957 1958| 类型 | 说明 | 1959| ------------------------- | -------------------- | 1960| Promise<[Image](#image9)> | 异步返回下一张图片。 | 1961 1962**示例:** 1963 1964```js 1965receiver.readNextImage().then(img => { 1966 console.log('readNextImage succeeded.'); 1967}).catch(error => { 1968 console.log('readNextImage failed.'); 1969}) 1970``` 1971 1972### on<sup>9+</sup> 1973 1974on(type: 'imageArrival', callback: AsyncCallback\<void>): void 1975 1976接收图片时注册回调。 1977 1978**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 1979 1980**参数:** 1981 1982| 参数名 | 类型 | 必填 | 说明 | 1983| -------- | -------------------- | ---- | ------------------------------------------------------ | 1984| type | string | 是 | 注册事件的类型,固定为'imageArrival',接收图片时触发。 | 1985| callback | AsyncCallback\<void> | 是 | 注册的事件回调。 | 1986 1987**示例:** 1988 1989```js 1990receiver.on('imageArrival', () => {}) 1991``` 1992 1993### release<sup>9+</sup> 1994 1995release(callback: AsyncCallback\<void>): void 1996 1997释放ImageReceiver实例并使用回调返回结果。 1998 1999**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 2000 2001**参数:** 2002 2003| 参数名 | 类型 | 必填 | 说明 | 2004| -------- | -------------------- | ---- | ------------------------ | 2005| callback | AsyncCallback\<void> | 是 | 回调函数,返回操作结果。 | 2006 2007**示例:** 2008 2009```js 2010receiver.release(() => {}) 2011``` 2012 2013### release<sup>9+</sup> 2014 2015release(): Promise\<void> 2016 2017释放ImageReceiver实例并使用promise返回结果。 2018 2019**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 2020 2021**返回值:** 2022 2023| 类型 | 说明 | 2024| -------------- | ------------------ | 2025| Promise\<void> | 异步返回操作结果。 | 2026 2027**示例:** 2028 2029```js 2030receiver.release().then(() => { 2031 console.log('release succeeded.'); 2032}).catch(error => { 2033 console.log('release failed.'); 2034}) 2035``` 2036 2037## image.createImageCreator<sup>9+</sup> 2038 2039createImageCreator(width: number, height: number, format: number, capacity: number): ImageCreator 2040 2041通过宽、高、图片格式、容量创建ImageCreator实例。 2042 2043**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2044 2045**参数:** 2046 2047| 参数名 | 类型 | 必填 | 说明 | 2048| -------- | ------ | ---- | ---------------------- | 2049| width | number | 是 | 图像的默认宽度。 | 2050| height | number | 是 | 图像的默认高度。 | 2051| format | number | 是 | 图像格式,如YCBCR_422_SP,JPEG。 | 2052| capacity | number | 是 | 同时访问的最大图像数。 | 2053 2054**返回值:** 2055 2056| 类型 | 说明 | 2057| ------------------------------ | --------------------------------------- | 2058| [ImageCreator](#imagecreator9) | 如果操作成功,则返回ImageCreator实例。 | 2059 2060**示例:** 2061 2062```js 2063var creator = image.createImageCreator(8192, 8, 4, 8); 2064``` 2065 2066## ImageCreator<sup>9+</sup> 2067 2068图像创建模块,用于请求图像原生数据区域,并开放给应用编译原生图像数据的能力。 2069在调用以下方法前需要先创建ImageCreator实例。 2070 2071### 属性 2072 2073**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2074 2075| 名称 | 类型 | 可读 | 可写 | 说明 | 2076| -------- | ---------------------------- | ---- | ---- | ------------------ | 2077| capacity | number | 是 | 否 | 同时访问的图像数。 | 2078| format | [ImageFormat](#imageformat9) | 是 | 否 | 图像格式。 | 2079 2080### dequeueImage<sup>9+</sup> 2081 2082dequeueImage(callback: AsyncCallback\<Image>): void 2083 2084从空闲队列中获取buffer图片,用于绘制UI内容,并使用callback返回结果。 2085 2086**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2087 2088**参数:** 2089 2090| 参数名 | 类型 | 必填 | 说明 | 2091| ------------- | ---------------------------------------| ---- | -------------------- | 2092| callback | AsyncCallback\<Image> | 是 | 回调函数,返回最新图片。 | 2093 2094**示例:** 2095 2096```js 2097creator.dequeueImage((err, img) => { 2098 if (err) { 2099 console.info('dequeueImage failded.'); 2100 } 2101 console.info('dequeueImage succeeded.'); 2102}); 2103``` 2104 2105### dequeueImage<sup>9+</sup> 2106 2107dequeueImage(): Promise\<Image> 2108 2109从空闲队列中获取buffer图片,用于绘制UI内容,并使用promise返回结果。 2110 2111**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2112 2113**返回值:** 2114 2115| 类型 | 说明 | 2116| --------------- | ------------- | 2117| Promise\<Image> | 返回绘制的图像。 | 2118 2119**示例:** 2120 2121```js 2122creator.dequeueImage().then(img => { 2123 console.info('dequeueImage succeeded.'); 2124}).catch(error => { 2125 console.log('dequeueImage failed: ' + error); 2126}) 2127``` 2128 2129### queueImage<sup>9+</sup> 2130 2131queueImage(interface: Image, callback: AsyncCallback\<void>): void 2132 2133将绘制好的图片放入Dirty队列,并使用callback返回结果。 2134 2135**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2136 2137**参数:** 2138 2139| 参数名 | 类型 | 必填 | 说明 | 2140| ------------- | -------------------------| ---- | -------------------- | 2141| interface | Image | 是 | 绘制好的buffer图像。 | 2142| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 2143 2144**示例:** 2145 2146```js 2147creator.dequeueImage().then(img => { 2148 //绘制图片 2149 img.getComponent(4).then(component => { 2150 var bufferArr = new Uint8Array(component.byteBuffer); 2151 for (var i = 0; i < bufferArr.length; i += 4) { 2152 bufferArr[i] = 0; //B 2153 bufferArr[i + 1] = 0; //G 2154 bufferArr[i + 2] = 255; //R 2155 bufferArr[i + 3] = 255; //A 2156 } 2157 }) 2158 creator.queueImage(img, (err) => { 2159 if (err) { 2160 console.info('queueImage failed: ' + err); 2161 } 2162 console.info('queueImage succeeded'); 2163 }) 2164}) 2165 2166``` 2167 2168### queueImage<sup>9+</sup> 2169 2170queueImage(interface: Image): Promise\<void> 2171 2172将绘制好的图片放入Dirty队列,并使用promise返回结果。 2173 2174**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2175 2176**参数:** 2177 2178| 参数名 | 类型 | 必填 | 说明 | 2179| ------------- | --------| ---- | ------------------- | 2180| interface | Image | 是 | 绘制好的buffer图像。 | 2181 2182**返回值:** 2183 2184| 类型 | 说明 | 2185| -------------- | ------------- | 2186| Promise\<void> | 获取回调,失败时返回错误信息。 | 2187 2188**示例:** 2189 2190```js 2191creator.dequeueImage().then(img => { 2192 //绘制图片 2193 img.getComponent(4).then(component => { 2194 var bufferArr = new Uint8Array(component.byteBuffer); 2195 for (var i = 0; i < bufferArr.length; i += 4) { 2196 bufferArr[i] = 0; //B 2197 bufferArr[i + 1] = 0; //G 2198 bufferArr[i + 2] = 255; //R 2199 bufferArr[i + 3] = 255; //A 2200 } 2201 }) 2202 creator.queueImage(img).then(() => { 2203 console.info('queueImage succeeded.'); 2204 }).catch(error => { 2205 console.info('queueImage failed: ' + error); 2206 }) 2207}) 2208 2209``` 2210 2211### on<sup>9+</sup> 2212 2213on(type: 'imageRelease', callback: AsyncCallback\<void>): void 2214 2215监听imageRelease事件,并使用callback返回结果。 2216 2217**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2218 2219**参数:** 2220 2221| 参数名 | 类型 | 必填 | 说明 | 2222| ------------- | -------------------------| ---- | -------------------- | 2223| type | string | 是 | 监听事件类型,如'imageRelease'。 | 2224| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 2225 2226**示例:** 2227 2228```js 2229creator.on('imageRelease', (err) => { 2230 if (err) { 2231 console.info('on faild' + err); 2232 } 2233 console.info('on succeeded'); 2234}) 2235``` 2236 2237### release<sup>9+</sup> 2238 2239release(callback: AsyncCallback\<void>): void 2240 2241释放当前图像,并使用callback返回结果。 2242 2243**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2244 2245**参数:** 2246 2247| 参数名 | 类型 | 必填 | 说明 | 2248| ------------- | -------------------------| ---- | -------------------- | 2249| callback | AsyncCallback\<void> | 是 | 获取回调,失败时返回错误信息。 | 2250 2251**示例:** 2252 2253```js 2254creator.release((err) => { 2255 if (err) { 2256 console.info('release failed: ' + err); 2257 } 2258 console.info('release succeeded'); 2259}); 2260``` 2261### release<sup>9+</sup> 2262 2263release(): Promise\<void> 2264 2265释放当前图像,并使用promise返回结果。 2266 2267**系统能力:** SystemCapability.Multimedia.Image.ImageCreator 2268 2269**返回值:** 2270 2271| 类型 | 说明 | 2272| -------------- | ------------- | 2273| Promise\<void> | 获取回调,失败时返回错误信息。 | 2274 2275**示例:** 2276 2277```js 2278creator.release().then(() => { 2279 console.info('release succeeded'); 2280}).catch(error => { 2281 console.info('release failed'); 2282}) 2283``` 2284 2285## Image<sup>9+</sup> 2286 2287提供基本的图像操作,包括获取图像信息、读写图像数据。调用[readNextImage](#readnextimage9)和[readLatestImage](#readlatestimage9)接口时会返回image。 2288 2289### 属性 2290 2291**系统能力:** SystemCapability.Multimedia.Image.Core 2292 2293| 名称 | 类型 | 可读 | 可写 | 说明 | 2294| -------- | ------------------ | ---- | ---- | -------------------------------------------------- | 2295| clipRect | [Region](#region7) | 是 | 是 | 要裁剪的图像区域。 | 2296| size | [Size](#size) | 是 | 否 | 图像大小。 | 2297| format | number | 是 | 否 | 图像格式,参考[PixelMapFormat](#pixelmapformat7)。 | 2298 2299### getComponent<sup>9+</sup> 2300 2301getComponent(componentType: ComponentType, callback: AsyncCallback\<Component>): void 2302 2303根据图像的组件类型从图像中获取组件缓存并使用callback返回结果。 2304 2305**系统能力:** SystemCapability.Multimedia.Image.Core 2306 2307**参数:** 2308 2309| 参数名 | 类型 | 必填 | 说明 | 2310| ------------- | --------------------------------------- | ---- | -------------------- | 2311| componentType | [ComponentType](#componenttype9) | 是 | 图像的组件类型。 | 2312| callback | AsyncCallback<[Component](#component9)> | 是 | 用于返回组件缓冲区。 | 2313 2314**示例:** 2315 2316```js 2317img.getComponent(4, (err, component) => { 2318 if(err) { 2319 console.log('getComponent failed.'); 2320 } else { 2321 console.log('getComponent succeeded.'); 2322 } 2323}) 2324``` 2325 2326### getComponent<sup>9+</sup> 2327 2328getComponent(componentType: ComponentType): Promise\<Component> 2329 2330根据图像的组件类型从图像中获取组件缓存并使用Promise方式返回结果。 2331 2332**系统能力:** SystemCapability.Multimedia.Image.Core 2333 2334**参数:** 2335 2336| 参数名 | 类型 | 必填 | 说明 | 2337| ------------- | -------------------------------- | ---- | ---------------- | 2338| componentType | [ComponentType](#componenttype9) | 是 | 图像的组件类型。 | 2339 2340**返回值:** 2341 2342| 类型 | 说明 | 2343| --------------------------------- | --------------------------------- | 2344| Promise<[Component](#component9)> | 用于返回组件缓冲区的promise实例。 | 2345 2346**示例:** 2347 2348```js 2349img.getComponent(4).then(component => { }) 2350``` 2351 2352### release<sup>9+</sup> 2353 2354release(callback: AsyncCallback\<void>): void 2355 2356释放当前图像并使用callback返回结果。 2357 2358在接收另一个图像前必须先释放对应资源。 2359 2360**系统能力:** SystemCapability.Multimedia.Image.Core 2361 2362**参数:** 2363 2364| 参数名 | 类型 | 必填 | 说明 | 2365| -------- | -------------------- | ---- | -------------- | 2366| callback | AsyncCallback\<void> | 是 | 返回操作结果。 | 2367 2368**示例:** 2369 2370```js 2371img.release(() =>{ 2372 console.log('release succeeded.'); 2373}) 2374``` 2375 2376### release<sup>9+</sup> 2377 2378release(): Promise\<void> 2379 2380释放当前图像并使用Promise方式返回结果。 2381 2382在接收另一个图像前必须先释放对应资源。 2383 2384**系统能力:** SystemCapability.Multimedia.Image.Core 2385 2386**返回值:** 2387 2388| 类型 | 说明 | 2389| -------------- | --------------------- | 2390| Promise\<void> | promise返回操作结果。 | 2391 2392**示例:** 2393 2394```js 2395img.release().then(() =>{ 2396 console.log('release succeeded.'); 2397}).catch(error => { 2398 console.log('release failed.'); 2399}) 2400``` 2401 2402## PositionArea<sup>7+</sup> 2403 2404表示图片指定区域内的数据。 2405 2406**系统能力:** SystemCapability.Multimedia.Image.Core 2407 2408| 名称 | 类型 | 可读 | 可写 | 说明 | 2409| ------ | ------------------ | ---- | ---- | ------------------------------------------------------------ | 2410| pixels | ArrayBuffer | 是 | 否 | 像素。 | 2411| offset | number | 是 | 否 | 偏移量。 | 2412| stride | number | 是 | 否 | 像素间距,stride >= region.size.width*4。 | 2413| region | [Region](#region7) | 是 | 否 | 区域,按照区域读写。写入的区域宽度加X坐标不能大于原图的宽度,写入的区域高度加Y坐标不能大于原图的高度。 | 2414 2415## ImageInfo 2416 2417表示图片信息。 2418 2419**系统能力:** SystemCapability.Multimedia.Image.Core 2420 2421| 名称 | 类型 | 可读 | 可写 | 说明 | 2422| ---- | ------------- | ---- | ---- | ---------- | 2423| size | [Size](#size) | 是 | 是 | 图片大小。 | 2424| density<sup>9+</sup> | number | 是 | 是 | 像素密度,单位为ppi。 | 2425 2426## Size 2427 2428表示图片尺寸。 2429 2430**系统能力:** SystemCapability.Multimedia.Image.Core 2431 2432| 名称 | 类型 | 可读 | 可写 | 说明 | 2433| ------ | ------ | ---- | ---- | -------------- | 2434| height | number | 是 | 是 | 输出图片的高。 | 2435| width | number | 是 | 是 | 输出图片的宽。 | 2436 2437## PixelMapFormat<sup>7+</sup> 2438 2439枚举,图片像素格式。 2440 2441**系统能力:** SystemCapability.Multimedia.Image.Core 2442 2443| 名称 | 值 | 说明 | 2444| ---------------------- | ------ | ----------------- | 2445| UNKNOWN | 0 | 未知格式。 | 2446| RGB_565 | 2 | 格式为RGB_565 | 2447| RGBA_8888 | 3 | 格式为RGBA_8888 | 2448| BGRA_8888<sup>9+</sup> | 4 | 格式为BGRA_8888 | 2449| RGB_888<sup>9+</sup> | 5 | 格式为RGB_888 | 2450| ALPHA_8<sup>9+</sup> | 6 | 格式为ALPHA_8 | 2451| RGBA_F16<sup>9+</sup> | 7 | 格式为RGBA_F16 | 2452| NV21<sup>9+</sup> | 8 | 格式为NV21 | 2453| NV12<sup>9+</sup> | 9 | 格式为NV12 | 2454 2455## AlphaType<sup>9+</sup> 2456 2457枚举,图像的透明度类型。 2458 2459**系统能力:** SystemCapability.Multimedia.Image.Core 2460 2461| 名称 | 值 | 说明 | 2462| -------- | ------ | ----------------------- | 2463| UNKNOWN | 0 | 未知透明度。 | 2464| OPAQUE | 1 | 没有alpha或图片全透明。 | 2465| PREMUL | 2 | RGB前乘alpha。 | 2466| UNPREMUL | 3 | RGB不前乘alpha。 | 2467 2468## ScaleMode<sup>9+</sup> 2469 2470枚举,图像的缩放模式。 2471 2472**系统能力:** SystemCapability.Multimedia.Image.Core 2473 2474| 名称 | 值 | 说明 | 2475| --------------- | ------ | -------------------------------------------------- | 2476| CENTER_CROP | 1 | 缩放图像以填充目标图像区域并居中裁剪区域外的效果。 | 2477| FIT_TARGET_SIZE | 0 | 图像适合目标尺寸的效果。 | 2478 2479## SourceOptions<sup>9+</sup> 2480 2481ImageSource的初始化选项。 2482 2483**系统能力:** SystemCapability.Multimedia.Image.Core 2484 2485| 名称 | 类型 | 可读 | 可写 | 说明 | 2486| ----------------- | ---------------------------------- | ---- | ---- | ------------------ | 2487| sourceDensity | number | 是 | 是 | ImageSource的密度。| 2488| sourcePixelFormat | [PixelMapFormat](#pixelmapformat7) | 是 | 是 | 图片像素格式。 | 2489| sourceSize | [Size](#size) | 是 | 是 | 图像像素大小。 | 2490 2491 2492## InitializationOptions<sup>8+</sup> 2493 2494PixelMap的初始化选项。 2495 2496**系统能力:** SystemCapability.Multimedia.Image.Core 2497 2498| 名称 | 类型 | 可读 | 可写 | 说明 | 2499| ------------------------ | ---------------------------------- | ---- | ---- | -------------- | 2500| alphaType<sup>9+</sup> | [AlphaType](#alphatype9) | 是 | 是 | 透明度。 | 2501| editable | boolean | 是 | 是 | 是否可编辑。 | 2502| pixelFormat | [PixelMapFormat](#pixelmapformat7) | 是 | 是 | 像素格式。 | 2503| scaleMode<sup>9+</sup> | [ScaleMode](#scalemode9) | 是 | 是 | 缩略值。 | 2504| size | [Size](#size) | 是 | 是 | 创建图片大小。 | 2505 2506## DecodingOptions<sup>7+</sup> 2507 2508图像解码设置选项。 2509 2510**系统能力:** SystemCapability.Multimedia.Image.ImageSource 2511 2512| 名称 | 类型 | 可读 | 可写 | 说明 | 2513| ------------------ | ---------------------------------- | ---- | ---- | ---------------- | 2514| sampleSize | number | 是 | 是 | 缩略图采样大小。 | 2515| rotate | number | 是 | 是 | 旋转角度。 | 2516| editable | boolean | 是 | 是 | 是否可编辑。 | 2517| desiredSize | [Size](#size) | 是 | 是 | 期望输出大小。 | 2518| desiredRegion | [Region](#region7) | 是 | 是 | 解码区域。 | 2519| desiredPixelFormat | [PixelMapFormat](#pixelmapformat7) | 是 | 是 | 解码的像素格式。 | 2520| index | number | 是 | 是 | 解码图片序号。 | 2521| fitDensity<sup>9+</sup> | number | 是 | 是 | 图像像素密度,单位为ppi。 | 2522 2523## Region<sup>7+</sup> 2524 2525表示区域信息。 2526 2527**系统能力:** SystemCapability.Multimedia.Image.Core 2528 2529| 名称 | 类型 | 可读 | 可写 | 说明 | 2530| ---- | ------------- | ---- | ---- | ------------ | 2531| size | [Size](#size) | 是 | 是 | 区域大小。 | 2532| x | number | 是 | 是 | 区域横坐标。 | 2533| y | number | 是 | 是 | 区域纵坐标。 | 2534 2535## PackingOption 2536 2537表示图片打包选项。 2538 2539**系统能力:** SystemCapability.Multimedia.Image.ImagePacker 2540 2541| 名称 | 类型 | 可读 | 可写 | 说明 | 2542| ------- | ------ | ---- | ---- | --------------------------------------------------- | 2543| format | string | 是 | 是 | 目标格式。</br>当前只支持jpg和webp。 | 2544| quality | number | 是 | 是 | JPEG编码中设定输出图片质量的参数,取值范围为1-100。 | 2545| bufferSize<sup>9+</sup> | number | 是 | 是 | 用于设置图片大小,默认为10M | 2546 2547## GetImagePropertyOptions<sup>7+</sup> 2548 2549表示查询图片属性的索引。 2550 2551**系统能力:** SystemCapability.Multimedia.Image.ImageSource 2552 2553| 名称 | 类型 | 可读 | 可写 | 说明 | 2554| ------------ | ------ | ---- | ---- | ------------ | 2555| index | number | 是 | 是 | 图片序号。 | 2556| defaultValue | string | 是 | 是 | 默认属性值。 | 2557 2558## PropertyKey<sup>7+</sup> 2559 2560枚举,Exif(Exchangeable image file format)图片信息。 2561 2562**系统能力:** SystemCapability.Multimedia.Image.Core 2563 2564| 名称 | 值 | 说明 | 2565| ----------------- | ----------------------- | ------------------------ | 2566| BITS_PER_SAMPLE | "BitsPerSample" | 每个像素比特数。 | 2567| ORIENTATION | "Orientation" | 图片方向。 | 2568| IMAGE_LENGTH | "ImageLength" | 图片长度。 | 2569| IMAGE_WIDTH | "ImageWidth" | 图片宽度。 | 2570| GPS_LATITUDE | "GPSLatitude" | 图片纬度。 | 2571| GPS_LONGITUDE | "GPSLongitude" | 图片经度。 | 2572| GPS_LATITUDE_REF | "GPSLatitudeRef" | 纬度引用,例如N或S。 | 2573| GPS_LONGITUDE_REF | "GPSLongitudeRef" | 经度引用,例如W或E。 | 2574| DATE_TIME_ORIGINAL<sup>9+</sup> | "DateTimeOriginal" | 拍摄时间,例如2022:09:06 15:48:00 | 2575| EXPOSURE_TIME<sup>9+</sup> | "ExposureTime" | 曝光时间,例如1/33 sec.| 2576| SCENE_TYPE<sup>9+</sup> | "SceneType" | 拍摄场景模式,例如人像、风光、运动、夜景等。 | 2577| ISO_SPEED_RATINGS<sup>9+</sup> | "ISOSpeedRatings" | ISO感光度,例如400 | 2578| F_NUMBER<sup>9+</sup> | "FNumber" | 光圈值,例如f/1.8 | 2579 2580 2581## ImageFormat<sup>9+</sup> 2582 2583枚举,图片格式。 2584 2585**系统能力:** SystemCapability.Multimedia.Image.Core 2586 2587| 名称 | 值 | 说明 | 2588| ------------ | ------ | -------------------- | 2589| YCBCR_422_SP | 1000 | YCBCR422半平面格式。 | 2590| JPEG | 2000 | JPEG编码格式。 | 2591 2592## ComponentType<sup>9+</sup> 2593 2594枚举,图像的组件类型。 2595 2596**系统能力:** SystemCapability.Multimedia.Image.ImageReceiver 2597 2598| 名称 | 值 | 说明 | 2599| ----- | ------ | ----------- | 2600| YUV_Y | 1 | 亮度信息。 | 2601| YUV_U | 2 | 色度信息。 | 2602| YUV_V | 3 | 色度信息。 | 2603| JPEG | 4 | JPEG 类型。 | 2604 2605## Component<sup>9+</sup> 2606 2607描述图像颜色分量。 2608 2609**系统能力:** SystemCapability.Multimedia.Image.Core 2610 2611| 名称 | 类型 | 可读 | 可写 | 说明 | 2612| ------------- | -------------------------------- | ---- | ---- | ------------ | 2613| componentType | [ComponentType](#componenttype9) | 是 | 否 | 组件类型。 | 2614| rowStride | number | 是 | 否 | 行距。 | 2615| pixelStride | number | 是 | 否 | 像素间距。 | 2616| byteBuffer | ArrayBuffer | 是 | 否 | 组件缓冲区。 | 2617 2618## ResponseCode 2619 2620编译错误返回的响应码。 2621 2622| 名称 | 值 | 说明 | 2623| ----------------------------------- | -------- | --------------------------------------------------- | 2624| ERR_MEDIA_INVALID_VALUE | -1 | 无效大小。 | 2625| SUCCESS | 0 | 操作成功。 | 2626| ERROR | 62980096 | 操作失败。 | 2627| ERR_IPC | 62980097 | ipc错误。 | 2628| ERR_SHAMEM_NOT_EXIST | 62980098 | 共享内存错误。 | 2629| ERR_SHAMEM_DATA_ABNORMAL | 62980099 | 共享内存错误。 | 2630| ERR_IMAGE_DECODE_ABNORMAL | 62980100 | 图像解码错误。 | 2631| ERR_IMAGE_DATA_ABNORMAL | 62980101 | 图像输入数据错误。 | 2632| ERR_IMAGE_MALLOC_ABNORMAL | 62980102 | 图像malloc错误。 | 2633| ERR_IMAGE_DATA_UNSUPPORT | 62980103 | 不支持图像类型。 | 2634| ERR_IMAGE_INIT_ABNORMAL | 62980104 | 图像初始化错误。 | 2635| ERR_IMAGE_GET_DATA_ABNORMAL | 62980105 | 图像获取数据错误。 | 2636| ERR_IMAGE_TOO_LARGE | 62980106 | 图像数据太大。 | 2637| ERR_IMAGE_TRANSFORM | 62980107 | 图像转换错误。 | 2638| ERR_IMAGE_COLOR_CONVERT | 62980108 | 图像颜色转换错误。 | 2639| ERR_IMAGE_CROP | 62980109 | 裁剪错误。 | 2640| ERR_IMAGE_SOURCE_DATA | 62980110 | 图像源数据错误。 | 2641| ERR_IMAGE_SOURCE_DATA_INCOMPLETE | 62980111 | 图像源数据不完整。 | 2642| ERR_IMAGE_MISMATCHED_FORMAT | 62980112 | 图像格式不匹配。 | 2643| ERR_IMAGE_UNKNOWN_FORMAT | 62980113 | 图像未知格式。 | 2644| ERR_IMAGE_SOURCE_UNRESOLVED | 62980114 | 图像源未解析。 | 2645| ERR_IMAGE_INVALID_PARAMETER | 62980115 | 图像无效参数。 | 2646| ERR_IMAGE_DECODE_FAILED | 62980116 | 解码失败。 | 2647| ERR_IMAGE_PLUGIN_REGISTER_FAILED | 62980117 | 注册插件失败。 | 2648| ERR_IMAGE_PLUGIN_CREATE_FAILED | 62980118 | 创建插件失败。 | 2649| ERR_IMAGE_ENCODE_FAILED | 62980119 | 图像编码失败。 | 2650| ERR_IMAGE_ADD_PIXEL_MAP_FAILED | 62980120 | 图像添加像素映射失败。 | 2651| ERR_IMAGE_HW_DECODE_UNSUPPORT | 62980121 | 不支持图像硬件解码。 | 2652| ERR_IMAGE_DECODE_HEAD_ABNORMAL | 62980122 | 图像解码头错误。 | 2653| ERR_IMAGE_DECODE_EXIF_UNSUPPORT | 62980123 | 图像解码exif取消支持。 | 2654| ERR_IMAGE_PROPERTY_NOT_EXIST | 62980124 | 图像属性不存在;错误代码被媒体占用,图像从150开始。 | 2655| ERR_IMAGE_READ_PIXELMAP_FAILED | 62980246 | 读取像素地图失败。 | 2656| ERR_IMAGE_WRITE_PIXELMAP_FAILED | 62980247 | 写入像素映射失败。 | 2657| ERR_IMAGE_PIXELMAP_NOT_ALLOW_MODIFY | 62980248 | pixelmap不允许修改。 | 2658| ERR_IMAGE_CONFIG_FAILED | 62980259 | 配置错误。 | 2659