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