# Image Processing
The **Image** module provides APIs for image processing. You can use the APIs to create a **PixelMap** object with specified properties or read image pixel data (even in an area).
> **NOTE**
>
> The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```js
import image from '@ohos.multimedia.image';
```
## image.createPixelMap8+
createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise\
Creates a **PixelMap** object with the default BGRA_8888 format and pixel properties specified. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------------------------------------------ | ---- | ---------------------------------------------------------------- |
| colors | ArrayBuffer | Yes | Color array in BGRA_8888 format. |
| options | [InitializationOptions](#initializationoptions8) | Yes | Pixel properties, including the alpha type, size, scale mode, pixel format, and editable.|
**Return value**
| Type | Description |
| -------------------------------- | ----------------------------------------------------------------------- |
| Promise\<[PixelMap](#pixelmap7)> | Promise used to return the **PixelMap** object.
If the size of the created pixel map exceeds that of the original image, the pixel map size of the original image is returned.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
.then((pixelmap) => {
})
```
## image.createPixelMap8+
createPixelMap(colors: ArrayBuffer, options: InitializationOptions, callback: AsyncCallback\): void
Creates a **PixelMap** object with the default BGRA_8888 format and pixel properties specified. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------------------ | ---- | -------------------------- |
| colors | ArrayBuffer | Yes | Color array in BGRA_8888 format. |
| options | [InitializationOptions](#initializationoptions8) | Yes | Pixel properties. |
| callback | AsyncCallback\<[PixelMap](#pixelmap7)> | Yes | Callback used to return the **PixelMap** object.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (error, pixelmap) => {
if(error) {
console.log('Failed to create pixelmap.');
} else {
console.log('Succeeded in creating pixelmap.');
}
})
```
## PixelMap7+
Provides APIs to read or write image pixel map data and obtain image pixel map information. Before calling any API in **PixelMap**, you must use **createPixelMap** to create a **PixelMap** object.
### Attributes
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ---------- | ------- | ---- | ---- | -------------------------- |
| isEditable | boolean | Yes | No | Whether the image pixel map is editable.|
### readPixelsToBuffer7+
readPixelsToBuffer(dst: ArrayBuffer): Promise\
Reads data of this pixel map and writes the data to an **ArrayBuffer**. This API uses a promise to return the result. If this pixel map is created in the BGRA_8888 format, the data read is the same as the original data.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------- | ---- | ----------------------------------------------------------------------------------------------------- |
| dst | ArrayBuffer | Yes | Buffer to which the image pixel map data will be written. The buffer size is obtained by calling **getPixelBytesNumber**.|
**Return value**
| Type | Description |
| -------------- | ----------------------------------------------- |
| Promise\ | Promise used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const readBuffer = new ArrayBuffer(96);
pixelmap.readPixelsToBuffer(readBuffer).then(() => {
console.log('Succeeded in reading image pixel data.'); // Called if the condition is met.
}).catch(error => {
('Failed to read image pixel data.'); // Called if no condition is met.
})
```
### readPixelsToBuffer7+
readPixelsToBuffer(dst: ArrayBuffer, callback: AsyncCallback\): void
Reads data of this pixel map and writes the data to an **ArrayBuffer**. This API uses an asynchronous callback to return the result. If this pixel map is created in the BGRA_8888 format, the data read is the same as the original data.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ----------------------------------------------------------------------------------------------------- |
| dst | ArrayBuffer | Yes | Buffer to which the image pixel map data will be written. The buffer size is obtained by calling **getPixelBytesNumber**.|
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned. |
**Example**
```js
const readBuffer = new ArrayBuffer(96);
pixelmap.readPixelsToBuffer(readBuffer, (err, res) => {
if(err) {
console.log('Failed to read image pixel data.'); // Called if no condition is met.
} else {
console.log('Succeeded in reading image pixel data.'); // Called if the condition is met.
}
})
```
### readPixels7+
readPixels(area: PositionArea): Promise\
Reads image pixel map data in an area. This API uses a promise to return the data read.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------ | ---- | ------------------------ |
| area | [PositionArea](#positionarea7) | Yes | Area from which the image pixel map data will be read.|
**Return value**
| Type | Description |
| :------------- | :-------------------------------------------------- |
| Promise\ | Promise used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const area = new ArrayBuffer(400);
pixelmap.readPixels(area).then(() => {
console.log('Succeeded in reading the image data in the area.'); // Called if the condition is met.
}).catch(error => {
console.log('Failed to read the image data in the area.'); // Called if no condition is met.
})
```
### readPixels7+
readPixels(area: PositionArea, callback: AsyncCallback\): void
Reads image pixel map data in an area. This API uses an asynchronous callback to return the data read.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------ | ---- | ------------------------------ |
| area | [PositionArea](#positionarea7) | Yes | Area from which the image pixel map data will be read. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (err, pixelmap) => {
if(pixelmap == undefined){
console.info('createPixelMap failed.');
} else {
const area = { pixels: new ArrayBuffer(8),
offset: 0,
stride: 8,
region: { size: { height: 1, width: 2 }, x: 0, y: 0 }};
pixelmap.readPixels(area, () => {
console.info('readPixels success');
})
}
})
```
### writePixels7+
writePixels(area: PositionArea): Promise\
Writes image pixel map data to an area. This API uses a promise to return the operation result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------ | ---- | -------------------- |
| area | [PositionArea](#positionarea7) | Yes | Area to which the image pixel map data will be written.|
**Return value**
| Type | Description |
| :------------- | :-------------------------------------------------- |
| Promise\ | Promise used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts)
.then( pixelmap => {
if (pixelmap == undefined) {
console.info('createPixelMap failed.');
}
const area = { pixels: new ArrayBuffer(8),
offset: 0,
stride: 8,
region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
}
let bufferArr = new Uint8Array(area.pixels);
for (var i = 0; i < bufferArr.length; i++) {
bufferArr[i] = i + 1;
}
pixelmap.writePixels(area).then(() => {
const readArea = { pixels: new ArrayBuffer(8),
offset: 0,
stride: 8,
// region.size.width + x < opts.width, region.size.height + y < opts.height
region: { size: { height: 1, width: 2 }, x: 0, y: 0 }
}
})
}).catch(error => {
console.log('error: ' + error);
})
```
### writePixels7+
writePixels(area: PositionArea, callback: AsyncCallback\): void
Writes image pixel map data to an area. This API uses an asynchronous callback to return the operation result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| --------- | ------------------------------ | ---- | ------------------------------ |
| area | [PositionArea](#positionarea7) | Yes | Area to which the image pixel map data will be written. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const area = new ArrayBuffer(400);
pixelmap.writePixels(area, (error) => {
if (error != undefined) {
console.info('Failed to write pixelmap into the specified area.');
} else {
const readArea = {
pixels: new ArrayBuffer(20),
offset: 0,
stride: 8,
region: { size: { height: 1, width: 2 }, x: 0, y: 0 },
}
}
})
```
### writeBufferToPixels7+
writeBufferToPixels(src: ArrayBuffer): Promise\
Reads image data in an **ArrayBuffer** and writes the data to a **PixelMap** object. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------- | ---- | -------------- |
| src | ArrayBuffer | Yes | Buffer from which the image data will be read.|
**Return value**
| Type | Description |
| -------------- | ----------------------------------------------- |
| Promise\ | Promise used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const color = new ArrayBuffer(96);
const pixelMap = new ArrayBuffer(400);
let bufferArr = new Uint8Array(color);
pixelMap.writeBufferToPixels(color).then(() => {
console.log("Succeeded in writing data from a buffer to a PixelMap.");
}).catch((err) => {
console.error("Failed to write data from a buffer to a PixelMap.");
})
```
### writeBufferToPixels7+
writeBufferToPixels(src: ArrayBuffer, callback: AsyncCallback\): void
Reads image data in an **ArrayBuffer** and writes the data to a **PixelMap** object. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------------ |
| src | ArrayBuffer | Yes | Buffer from which the image data will be read. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
const color = new ArrayBuffer(96);
const pixelMap = new ArrayBuffer(400);
let bufferArr = new Uint8Array(color);
pixelMap.writeBufferToPixels(color, function(err) {
if (err) {
console.error("Failed to write data from a buffer to a PixelMap.");
return;
} else {
console.log("Succeeded in writing data from a buffer to a PixelMap.");
}
});
```
### getImageInfo7+
getImageInfo(): Promise\
Obtains pixel map information of this image. This API uses a promise to return the information.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| --------------------------------- | ----------------------------------------------------------- |
| Promise\<[ImageInfo](#imageinfo)> | Promise used to return the pixel map information. If the operation fails, an error message is returned.|
**Example**
```js
const pixelMap = new ArrayBuffer(400);
pixelMap.getImageInfo().then(function(info) {
console.log("Succeeded in obtaining the image pixel map information.");
}).catch((err) => {
console.error("Failed to obtain the image pixel map information.");
});
```
### getImageInfo7+
getImageInfo(callback: AsyncCallback\): void
Obtains pixel map information of this image. This API uses an asynchronous callback to return the information.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback\<[ImageInfo](#imageinfo)> | Yes | Callback used to return the pixel map information. If the operation fails, an error message is returned.|
**Example**
```js
pixelmap.getImageInfo((imageInfo) => {
console.log("Succeeded in obtaining the image pixel map information.");
})
```
### getBytesNumberPerRow7+
getBytesNumberPerRow(): number
Obtains the number of bytes per row of this image pixel map.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| ------ | -------------------- |
| number | Number of bytes per row.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (err,pixelmap) => {
let rowCount = pixelmap.getBytesNumberPerRow();
})
```
### getPixelBytesNumber7+
getPixelBytesNumber(): number
Obtains the total number of bytes of this image pixel map.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| ------ | -------------------- |
| number | Total number of bytes.|
**Example**
```js
let pixelBytesNumber = pixelmap.getPixelBytesNumber();
```
### getDensity9+
getDensity():number
Obtains the density of this image pixel map.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| ------ | --------------- |
| number | Density of the image pixel map.|
**Example**
```js
let getDensity = pixelmap.getDensity();
```
### opacity9+
opacity(rate: number, callback: AsyncCallback\): void
Sets an opacity rate for this image pixel map. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------------ |
| rate | number | Yes | Opacity rate to set. The value ranges from 0 to 1. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.opacity(0.5);
}
```
### opacity9+
opacity(rate: number): Promise\
Sets an opacity rate for this image pixel map. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | --------------------------- |
| rate | number | Yes | Opacity rate to set. The value ranges from 0 to 1.|
**Return value**
| Type | Description |
| -------------- | ----------------------------------------------- |
| Promise\ | Promise used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.opacity(0.5);
}
```
### createAlphaPixelmap9+
createAlphaPixelmap(): Promise\
Creates a **PixelMap** object that contains only the alpha channel information. This object can be used for the shadow effect. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| -------------------------------- | --------------------------- |
| Promise\<[PixelMap](#pixelmap7)> | Promise used to return the **PixelMap** object.|
**Example**
```js
pixelMap.createAlphaPixelmap(async (err, alphaPixelMap) => {
if (alphaPixelMap == undefined) {
console.info('Failed to obtain new pixel map.');
} else {
console.info('Succeed in obtaining new pixel map.');
}
})
```
### createAlphaPixelmap9+
createAlphaPixelmap(callback: AsyncCallback\): void
Creates a **PixelMap** object that contains only the alpha channel information. This object can be used for the shadow effect. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------ | ---- | ------------------------ |
| callback | AsyncCallback\ | Yes | Callback used to return the **PixelMap** object.|
**Example**
```js
let pixelMap = await imageSource.createPixelMap();
if (pixelMap != undefined) {
pixelMap.createAlphaPixelmap(async (err, alphaPixelMap) => {
console.info('Failed to obtain new pixel map.');
})
} else {
console.info('Succeed in obtaining new pixel map.');
}
```
### scale9+
scale(x: number, y: number, callback: AsyncCallback\): void
Scales this image based on the input width and height. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------------- |
| x | number | Yes | Scaling ratio of the width.|
| y | number | Yes | Scaling ratio of the height.|
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned. |
**Example**
```js
async function () {
await pixelMap.scale(2.0, 1.0);
}
```
### scale9+
scale(x: number, y: number): Promise\
Scales this image based on the input width and height. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ------------------------------- |
| x | number | Yes | Scaling ratio of the width.|
| y | number | Yes | Scaling ratio of the height.|
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
async function () {
await pixelMap.scale(2.0, 1.0);
}
```
### translate9+
translate(x: number, y: number, callback: AsyncCallback\): void
Translates this image based on the input coordinates. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ----------------------------- |
| x | number | Yes | X coordinate to translate. |
| y | number | Yes | Y coordinate to translate. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.translate(3.0, 1.0);
}
```
### translate9+
translate(x: number, y: number): Promise\
Translates this image based on the input coordinates. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ----------- |
| x | number | Yes | X coordinate to translate.|
| y | number | Yes | Y coordinate to translate.|
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
async function () {
await pixelMap.translate(3.0, 1.0);
}
```
### rotate9+
rotate(angle: number, callback: AsyncCallback\): void
Rotates this image based on the input angle. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ----------------------------- |
| angle | number | Yes | Angle to rotate. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.rotate(90.0);
}
```
### rotate9+
rotate(angle: number): Promise\
Rotates this image based on the input angle. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ----------------------------- |
| angle | number | Yes | Angle to rotate. |
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
async function () {
await pixelMap.rotate(90.0);
}
```
### flip9+
flip(horizontal: boolean, vertical: boolean, callback: AsyncCallback\): void
Flips this image horizontally or vertically, or both. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| ---------- | -------------------- | ---- | ----------------------------- |
| horizontal | boolean | Yes | Whether to flip the image horizontally. |
| vertical | boolean | Yes | Whether to flip the image vertically. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.flip(false, true);
}
```
### flip9+
flip(horizontal: boolean, vertical: boolean): Promise\
Flips this image horizontally or vertically, or both. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| ---------- | ------- | ---- | --------- |
| horizontal | boolean | Yes | Whether to flip the image horizontally.|
| vertical | boolean | Yes | Whether to flip the image vertically.|
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
async function () {
await pixelMap.flip(false, true);
}
```
### crop9+
crop(region: Region, callback: AsyncCallback\): void
Crops this image based on the input size. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ----------------------------- |
| region | [Region](#region7) | Yes | Size of the image after cropping. |
| callback | AsyncCallback\ | Yes | Callback used to return the result. If the operation fails, an error message is returned.|
**Example**
```js
async function () {
await pixelMap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } });
}
```
### crop9+
crop(region: Region): Promise\
Crops this image based on the input size. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------ | ---- | ----------- |
| region | [Region](#region7) | Yes | Size of the image after cropping.|
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
async function () {
await pixelMap.crop({ x: 0, y: 0, size: { height: 100, width: 100 } });
}
```
### release7+
release():Promise\
Releases this **PixelMap** object. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| -------------- | ------------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (pixelmap) => {
pixelmap.release().then(() => {
console.log('Succeeded in releasing pixelmap object.');
}).catch(error => {
console.log('Failed to release pixelmap object.');
})
})
```
### release7+
release(callback: AsyncCallback\): void
Releases this **PixelMap** object. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------ |
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```js
const color = new ArrayBuffer(96);
let bufferArr = new Uint8Array(color);
let opts = { editable: true, pixelFormat: 3, size: { height: 4, width: 6 } }
image.createPixelMap(color, opts, (pixelmap) => {
pixelmap.release().then(() => {
console.log('Succeeded in releasing pixelmap object.');
})
})
```
## image.createImageSource
createImageSource(uri: string): ImageSource
Creates an **ImageSource** instance based on the URI.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ---------------------------------- |
| uri | string | Yes | Image path. Currently, only the application sandbox path is supported.
Currently, the following raw formats are supported: .jpg, .png, .gif, .bmp, and .webp.|
**Return value**
| Type | Description |
| --------------------------- | -------------------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns **undefined** otherwise.|
**Example**
```js
let path = this.context.getApplicationContext().fileDirs + "test.jpg";
const imageSourceApi = image.createImageSource(path);
```
## image.createImageSource9+
createImageSource(uri: string, options: SourceOptions): ImageSource
Creates an **ImageSource** instance based on the URI.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------------------------- | ---- | ----------------------------------- |
| uri | string | Yes | Image path. Currently, only the application sandbox path is supported.
Currently, the following raw formats are supported: .jpg, .png, .gif, .bmp, and .webp.|
| options | [SourceOptions](#sourceoptions9) | Yes | Image properties, including the image index and default property value.|
**Return value**
| Type | Description |
| --------------------------- | -------------------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns **undefined** otherwise.|
**Example**
```js
const imageSourceApi = image.createImageSource('/sdcard/test.jpg');
```
## image.createImageSource7+
createImageSource(fd: number): ImageSource
Creates an **ImageSource** instance based on the file descriptor.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ------------- |
| fd | number | Yes | File descriptor.|
**Return value**
| Type | Description |
| --------------------------- | -------------------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns **undefined** otherwise.|
**Example**
```js
const imageSourceApi = image.createImageSource(0);
```
## image.createImageSource9+
createImageSource(fd: number, options: SourceOptions): ImageSource
Creates an **ImageSource** instance based on the file descriptor.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------------------------- | ---- | ----------------------------------- |
| fd | number | Yes | File descriptor. |
| options | [SourceOptions](#sourceoptions9) | Yes | Image properties, including the image index and default property value.|
**Return value**
| Type | Description |
| --------------------------- | -------------------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns **undefined** otherwise.|
**Example**
```js
const imageSourceApi = image.createImageSource(fd);
```
## image.createImageSource9+
createImageSource(buf: ArrayBuffer): ImageSource
Creates an **ImageSource** instance based on the buffers.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------- | ---- | ---------------- |
| buf | ArrayBuffer | Yes | Array of image buffers.|
**Example**
```js
const buf = new ArrayBuffer(96);
const imageSourceApi = image.createImageSource(buf);
```
## image.createImageSource9+
createImageSource(buf: ArrayBuffer, options: SourceOptions): ImageSource
Creates an **ImageSource** instance based on the buffers.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | -------------------------------- | ---- | ------------------------------------ |
| buf | ArrayBuffer | Yes | Array of image buffers. |
| options | [SourceOptions](#sourceoptions9) | Yes | Image properties, including the image index and default property value.|
**Return value**
| Type | Description |
| --------------------------- | -------------------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns **undefined** otherwise.|
**Example**
```js
const data = new ArrayBuffer(112);
const imageSourceApi = image.createImageSource(data);
```
## image.CreateIncrementalSource9+
CreateIncrementalSource(buf: ArrayBuffer): ImageSource
Creates an **ImageSource** instance in incremental mode based on the buffers.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------| ---- | ----------|
| buf | ArrayBuffer | Yes | Incremental data.|
**Return value**
| Type | Description |
| --------------------------- | --------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns undefined otherwise.|
**Example**
```js
const buf = new ArrayBuffer(96);
const imageSourceApi = image.CreateIncrementalSource(buf);
```
## image.CreateIncrementalSource9+
CreateIncrementalSource(buf: ArrayBuffer, options?: SourceOptions): ImageSource
Creates an **ImageSource** instance in incremental mode based on the buffers.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------------------------- | ---- | ------------------------------------ |
| buf | ArrayBuffer | Yes | Incremental data. |
| options | [SourceOptions](#sourceoptions9) | No | Image properties, including the image index and default property value.|
**Return value**
| Type | Description |
| --------------------------- | --------------------------------- |
| [ImageSource](#imagesource) | Returns the **ImageSource** instance if the operation is successful; returns undefined otherwise.|
**Example**
```js
const buf = new ArrayBuffer(96);
const imageSourceApi = image.CreateIncrementalSource(buf);
```
## ImageSource
Provides APIs to obtain image information. Before calling any API in **ImageSource**, you must use **createImageSource** to create an **ImageSource** instance.
### Attributes
**System capability**: SystemCapability.Multimedia.Image.ImageSource
| Name | Type | Readable| Writable| Description |
| ---------------- | -------------- | ---- | ---- | ------------------------------------------------------------ |
| supportedFormats | Array\ | Yes | No | Supported image formats, including png, jpeg, wbmp, bmp, gif, webp, and heif.|
### getImageInfo
getImageInfo(index: number, callback: AsyncCallback\): void
Obtains information about an image with the specified index. This API uses an asynchronous callback to return the information.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------------------------- | ---- | ---------------------------------------- |
| index | number | Yes | Index of the image. |
| callback | AsyncCallback<[ImageInfo](#imageinfo)> | Yes | Callback used to return the image information.|
**Example**
```js
imageSourceApi.getImageInfo(0,(error, imageInfo) => {
if(error) {
console.log('getImageInfo failed.');
} else {
console.log('getImageInfo succeeded.');
}
})
```
### getImageInfo
getImageInfo(callback: AsyncCallback\): void
Obtains information about this image. This API uses an asynchronous callback to return the information.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------------------------- | ---- | ---------------------------------------- |
| callback | AsyncCallback<[ImageInfo](#imageinfo)> | Yes | Callback used to return the image information.|
**Example**
```js
imageSourceApi.getImageInfo(imageInfo => {
console.log('Succeeded in obtaining the image information.');
})
```
### getImageInfo
getImageInfo(index?: number): Promise\
Obtains information about an image with the specified index. This API uses a promise to return the image information.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ----- | ------ | ---- | ------------------------------------- |
| index | number | No | Index of the image. If this parameter is not set, the default value **0** is used.|
**Return value**
| Type | Description |
| -------------------------------- | ---------------------- |
| Promise<[ImageInfo](#imageinfo)> | Promise used to return the image information.|
**Example**
```js
imageSourceApi.getImageInfo(0)
.then(imageInfo => {
console.log('Succeeded in obtaining the image information.');
}).catch(error => {
console.log('Failed to obtain the image information.');
})
```
### getImageProperty7+
getImageProperty(key:string, options?: GetImagePropertyOptions): Promise\
Obtains the value of a property with the specified index in this image. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ---------------------------------------------------- | ---- | ------------------------------------ |
| key | string | Yes | Name of the property. |
| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | No | Image properties, including the image index and default property value.|
**Return value**
| Type | Description |
| ---------------- | ----------------------------------------------------------------- |
| Promise\ | Promise used to return the property value. If the operation fails, the default value is returned.|
**Example**
```js
imageSourceApi.getImageProperty("BitsPerSample")
.then(data => {
console.log('Succeeded in getting the value of the specified attribute key of the image.');
})
```
### getImageProperty7+
getImageProperty(key:string, callback: AsyncCallback\): void
Obtains the value of a property with the specified index in this image. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
| key | string | Yes | Name of the property. |
| callback | AsyncCallback\ | Yes | Callback used to return the property value. If the operation fails, the default value is returned.|
**Example**
```js
imageSourceApi.getImageProperty("BitsPerSample",(error,data) => {
if(error) {
console.log('Failed to get the value of the specified attribute key of the image.');
} else {
console.log('Succeeded in getting the value of the specified attribute key of the image.');
}
})
```
### getImageProperty7+
getImageProperty(key:string, options: GetImagePropertyOptions, callback: AsyncCallback\): void
Obtains the value of a property in this image. This API uses an asynchronous callback to return the property value in a string.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------- |
| key | string | Yes | Name of the property. |
| options | [GetImagePropertyOptions](#getimagepropertyoptions7) | Yes | Image properties, including the image index and default property value. |
| callback | AsyncCallback\ | Yes | Callback used to return the property value. If the operation fails, the default value is returned.|
**Example**
```js
const property = new ArrayBuffer(400);
imageSourceApi.getImageProperty("BitsPerSample",property,(error,data) => {
if(error) {
console.log('Failed to get the value of the specified attribute key of the image.');
} else {
console.log('Succeeded in getting the value of the specified attribute key of the image.');
}
})
```
### modifyImageProperty9+
modifyImageProperty(key: string, value: string): Promise\
Modifies the value of a property in this image. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------ | ---- | ------------ |
| key | string | Yes | Name of the property.|
| value | string | Yes | New value of the property. |
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
imageSourceApi.modifyImageProperty("ImageWidth", "120")
.then(() => {
const w = imageSourceApi.getImageProperty("ImageWidth")
console.info('w', w);
})
```
### modifyImageProperty9+
modifyImageProperty(key: string, value: string, callback: AsyncCallback\): void
Modifies the value of a property in this image. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------- | ---- | ------------------------------ |
| key | string | Yes | Name of the property. |
| value | string | Yes | New value of the property. |
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```js
imageSourceApi.modifyImageProperty("ImageWidth", "120",() => {})
```
### updateData9+
updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number): Promise\
Updates incremental data. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ---------- | ----------- | ---- | ------------ |
| buf | ArrayBuffer | Yes | Incremental data. |
| isFinished | boolean | Yes | Whether the update is complete.|
| value | number | No | Offset for data reading. |
| length | number | No | Array length. |
**Return value**
| Type | Description |
| -------------- | -------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
const array = new ArrayBuffer(100);
imageSourceIncrementalSApi.updateData(array, false, 0, 10).then(data => {
console.info('Succeeded in updating data.');
})
```
### updateData9+
updateData(buf: ArrayBuffer, isFinished: boolean, value: number, length: number, callback: AsyncCallback\): void
Updates incremental data. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ---------- | ------------------- | ---- | -------------------- |
| buf | ArrayBuffer | Yes | Incremental data. |
| isFinished | boolean | Yes | Whether the update is complete. |
| value | number | No | Offset for data reading. |
| length | number | No | Array length. |
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```js
const array = new ArrayBuffer(100);
imageSourceIncrementalSApi.updateData(array, false, 0, 10,(error,data )=> {
if(data !== undefined){
console.info('Succeeded in updating data.');
}
})
```
### createPixelMap7+
createPixelMap(options?: DecodingOptions): Promise\
Creates a **PixelMap** object based on image decoding parameters. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| ------- | ------------------------------------ | ---- | ---------- |
| options | [DecodingOptions](#decodingoptions7) | No | Image decoding parameters.|
**Return value**
| Type | Description |
| -------------------------------- | --------------------- |
| Promise\<[PixelMap](#pixelmap7)> | Promise used to return the **PixelMap** object.|
**Example**
```js
imageSourceApi.createPixelMap().then(pixelmap => {
console.log('Succeeded in creating pixelmap object through image decoding parameters.');
}).catch(error => {
console.log('Failed to create pixelmap object through image decoding parameters.');
})
```
### createPixelMap7+
createPixelMap(callback: AsyncCallback\): void
Creates a **PixelMap** object based on the default parameters. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------- | ---- | -------------------------- |
| callback | AsyncCallback<[PixelMap](#pixelmap7)> | Yes | Callback used to return the **PixelMap** object.|
**Example**
```js
imageSourceApi.createPixelMap((err, pixelmap) => {
console.info('Succeeded in creating pixelmap object.');
})
```
### createPixelMap7+
createPixelMap(options: DecodingOptions, callback: AsyncCallback\): void
Creates a **PixelMap** object based on image decoding parameters. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------- | ---- | -------------------------- |
| options | [DecodingOptions](#decodingoptions7) | Yes | Image decoding parameters. |
| callback | AsyncCallback<[PixelMap](#pixelmap7)> | Yes | Callback used to return the **PixelMap** object.|
**Example**
```js
const decodingOptions = new ArrayBuffer(400);
imageSourceApi.createPixelMap(decodingOptions, pixelmap => {
console.log('Succeeded in creating pixelmap object.');
})
```
### release
release(callback: AsyncCallback\): void
Releases this **ImageSource** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ---------------------------------- |
| callback | AsyncCallback\ | Yes | Callback invoked for instance release. If the operation fails, an error message is returned.|
**Example**
```js
imageSourceApi.release(() => {
console.log('release succeeded.');
})
```
### release
release(): Promise\
Releases this **ImageSource** instance. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
**Return value**
| Type | Description |
| -------------- | --------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
imageSourceApi.release().then(()=>{
console.log('Succeeded in releasing the image source instance.');
}).catch(error => {
console.log('Failed to release the image source instance.');
})
```
## image.createImagePacker
createImagePacker(): ImagePacker
Creates an **ImagePacker** instance.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Return value**
| Type | Description |
| --------------------------- | --------------------- |
| [ImagePacker](#imagepacker) | **ImagePacker** instance created.|
**Example**
```js
const imagePackerApi = image.createImagePacker();
```
## ImagePacker
Provide APIs to pack images. Before calling any API in **ImagePacker**, you must use **createImagePacker** to create an **ImagePacker** instance.
### Attributes
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
| Name | Type | Readable| Writable| Description |
| ---------------- | -------------- | ---- | ---- | -------------------------- |
| supportedFormats | Array\ | Yes | No | Supported image format, which can be jpeg.|
### packing
packing(source: ImageSource, option: PackingOption, callback: AsyncCallback\): void
Packs an image. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ---------------------------------- | ---- | ---------------------------------- |
| source | [ImageSource](#imagesource) | Yes | Image to pack. |
| option | [PackingOption](#packingoption) | Yes | Option for image packing. |
| callback | AsyncCallback\ | Yes | Callback used to return the packed data.|
**Example**
```js
let packOpts = { format:"image/jpeg", quality:98 };
const imageSourceApi = new ArrayBuffer(400);
imagePackerApi.packing(imageSourceApi, packOpts, data => {})
```
### packing
packing(source: ImageSource, option: PackingOption): Promise\
Packs an image. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------- | ---- | -------------- |
| source | [ImageSource](#imagesource) | Yes | Image to pack.|
| option | [PackingOption](#packingoption) | Yes | Option for image packing.|
**Return value**
| Type | Description |
| ---------------------------- | --------------------------------------------- |
| Promise\ | Promise used to return the packed data.|
**Example**
```js
let packOpts = { format:"image/jpeg", quality:98 }
const imageSourceApi = new ArrayBuffer(400);
imagePackerApi.packing(imageSourceApi, packOpts)
.then( data => {
console.log('packing succeeded.');
}).catch(error => {
console.log('packing failed.');
})
```
### packing8+
packing(source: PixelMap, option: PackingOption, callback: AsyncCallback\): void
Packs an image. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------- | ---- | ---------------------------------- |
| source | [PixelMap](#pixelmap) | Yes | **PixelMap** object to pack. |
| option | [PackingOption](#packingoption) | Yes | Option for image packing. |
| callback | AsyncCallback\ | Yes | Callback used to return the packed data.|
**Example**
```js
let packOpts = { format:"image/jpeg", quality:98 }
const pixelMapApi = new ArrayBuffer(400);
imagePackerApi.packing(pixelMapApi, packOpts, data => {
console.log('Succeeded in packing the image.');
})
```
### packing8+
packing(source: PixelMap, option: PackingOption): Promise\
Packs an image. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------- | ---- | ------------------ |
| source | [PixelMap](#pixelmap) | Yes | **PixelMap** object to pack.|
| option | [PackingOption](#packingoption) | Yes | Option for image packing. |
**Return value**
| Type | Description |
| --------------------- | -------------------------------------------- |
| Promise\ | Promise used to return the packed data.|
**Example**
```js
let packOpts = { format:"image/jpeg", quality:98 }
const pixelMapApi = new ArrayBuffer(400);
imagePackerApi.packing(pixelMapApi, packOpts)
.then( data => {
console.log('Succeeded in packing the image.');
}).catch(error => {
console.log('Failed to pack the image..');
})
```
### release
release(callback: AsyncCallback\): void
Releases this **ImagePacker** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------------ |
| callback | AsyncCallback\ | Yes | Callback invoked for instance release. If the operation fails, an error message is returned.|
**Example**
```js
imagePackerApi.release(()=>{
console.log('Succeeded in releasing image packaging.');
})
```
### release
release(): Promise\
Releases this **ImagePacker** instance. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
**Return value**
| Type | Description |
| -------------- | ------------------------------------------------------ |
| Promise\ | Promise used to return the instance release result. If the operation fails, an error message is returned.|
**Example**
```js
imagePackerApi.release().then(()=>{
console.log('Succeeded in releasing image packaging.');
}).catch((error)=>{
console.log('Failed to release image packaging.');
})
```
## image.createImageReceiver9+
createImageReceiver(width: number, height: number, format: number, capacity: number): ImageReceiver
Create an **ImageReceiver** instance by specifying the image width, height, format, and capacity.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------ | ---- | ---------------------- |
| width | number | Yes | Default image width. |
| height | number | Yes | Default image height. |
| format | number | Yes | Image format. |
| capacity | number | Yes | Maximum number of images that can be accessed at the same time.|
**Return value**
| Type | Description |
| -------------------------------- | --------------------------------------- |
| [ImageReceiver](#imagereceiver9) | Returns an **ImageReceiver** instance if the operation is successful.|
**Example**
```js
var receiver = image.createImageReceiver(8192, 8, 4, 8);
```
## ImageReceiver9+
Provides APIs to obtain the surface ID of a component, read the latest image, read the next image, and release the **ImageReceiver** instance.
Before calling any APIs in **ImageReceiver**, you must create an **ImageReceiver** instance.
### Attributes
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
| Name | Type | Readable| Writable| Description |
| -------- | ---------------------------- | ---- | ---- | ------------------ |
| size | [Size](#size) | Yes | No | Image size. |
| capacity | number | Yes | No | Maximum number of images that can be accessed at the same time.|
| format | [ImageFormat](#imageformat9) | Yes | No | Image format. |
### getReceivingSurfaceId9+
getReceivingSurfaceId(callback: AsyncCallback\): void
Obtains a surface ID for the camera or other components. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ---------------------- | ---- | -------------------------- |
| callback | AsyncCallback\ | Yes | Callback used to return the surface ID.|
**Example**
```js
receiver.getReceivingSurfaceId((err, id) => {
if(err) {
console.log('getReceivingSurfaceId failed.');
} else {
console.log('getReceivingSurfaceId succeeded.');
}
});
```
### getReceivingSurfaceId9+
getReceivingSurfaceId(): Promise\
Obtains a surface ID for the camera or other components. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Return value**
| Type | Description |
| ---------------- | -------------------- |
| Promise\ | Promise used to return the surface ID.|
**Example**
```js
receiver.getReceivingSurfaceId().then( id => {
console.log('getReceivingSurfaceId succeeded.');
}).catch(error => {
console.log('getReceivingSurfaceId failed.');
})
```
### readLatestImage9+
readLatestImage(callback: AsyncCallback\): void
Reads the latest image from the **ImageReceiver** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------- | ---- | ------------------------ |
| callback | AsyncCallback<[Image](#image9)> | Yes | Callback used to return the latest image.|
**Example**
```js
receiver.readLatestImage((err, img) => {
if(err) {
console.log('readLatestImage failed.');
} else {
console.log('readLatestImage succeeded.');
}
});
```
### readLatestImage9+
readLatestImage(): Promise\
Reads the latest image from the **ImageReceiver** instance. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Return value**
| Type | Description |
| ------------------------- | ------------------ |
| Promise<[Image](#image9)> | Promise used to return the latest image.|
**Example**
```js
receiver.readLatestImage().then(img => {
console.log('readLatestImage succeeded.');
}).catch(error => {
console.log('readLatestImage failed.');
})
```
### readNextImage9+
readNextImage(callback: AsyncCallback\): void
Reads the next image from the **ImageReceiver** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------- | ---- | -------------------------- |
| callback | AsyncCallback<[Image](#image9)> | Yes | Callback used to return the next image.|
**Example**
```js
receiver.readNextImage((err, img) => {
if(err) {
console.log('readNextImage failed.');
} else {
console.log('readNextImage succeeded.');
}
});
```
### readNextImage9+
readNextImage(): Promise\
Reads the next image from the **ImageReceiver** instance. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Return value**
| Type | Description |
| ------------------------- | -------------------- |
| Promise<[Image](#image9)> | Promise used to return the next image.|
**Example**
```js
receiver.readNextImage().then(img => {
console.log('readNextImage succeeded.');
}).catch(error => {
console.log('readNextImage failed.');
})
```
### on('imageArrival')9+
on(type: 'imageArrival', callback: AsyncCallback\): void
Listens for image arrival events.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------------------------------------ |
| type | string | Yes | Type of event to listen for. The value is fixed at **imageArrival**, which is triggered when an image is received.|
| callback | AsyncCallback\ | Yes | Callback invoked for the event. |
**Example**
```js
receiver.on('imageArrival', () => {})
```
### release9+
release(callback: AsyncCallback\): void
Releases this **ImageReceiver** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | ------------------------ |
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```js
receiver.release(() => {})
```
### release9+
release(): Promise\
Releases this **ImageReceiver** instance. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
**Return value**
| Type | Description |
| -------------- | ------------------ |
| Promise\ | Promise used to return the result.|
**Example**
```js
receiver.release().then(() => {
console.log('release succeeded.');
}).catch(error => {
console.log('release failed.');
})
```
## Image9+
Provides APIs for basic image operations, including obtaining image information and reading and writing image data. An **Image** instance is returned when [readNextImage](#readnextimage9) and [readLatestImage](#readlatestimage9) are called.
### Attributes
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| -------- | ------------------ | ---- | ---- | -------------------------------------------------- |
| clipRect | [Region](#region7) | Yes | Yes | Image area to be cropped. |
| size | [Size](#size) | Yes | No | Image size. |
| format | number | Yes | No | Image format. For details, see [PixelMapFormat](#pixelmapformat7).|
### getComponent9+
getComponent(componentType: ComponentType, callback: AsyncCallback\): void
Obtains the component buffer from the **Image** instance based on the color component type. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | --------------------------------------- | ---- | -------------------- |
| componentType | [ComponentType](#componenttype9) | Yes | Color component type of the image. |
| callback | AsyncCallback<[Component](#component9)> | Yes | Callback used to return the component buffer.|
**Example**
```js
img.getComponent(4, (err, component) => {
if(err) {
console.log('getComponent failed.');
} else {
console.log('getComponent succeeded.');
}
})
```
### getComponent9+
getComponent(componentType: ComponentType): Promise\
Obtains the component buffer from the **Image** instance based on the color component type. This API uses a promise to return the result.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | -------------------------------- | ---- | ---------------- |
| componentType | [ComponentType](#componenttype9) | Yes | Color component type of the image.|
**Return value**
| Type | Description |
| --------------------------------- | --------------------------------- |
| Promise<[Component](#component9)> | Promise used to return the component buffer.|
**Example**
```js
img.getComponent(4).then(component => { })
```
### release9+
release(callback: AsyncCallback\): void
Releases this **Image** instance. This API uses an asynchronous callback to return the result.
The corresponding resources must be released before another image arrives.
**System capability**: SystemCapability.Multimedia.Image.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------------------- | ---- | -------------- |
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```js
img.release(() =>{
console.log('release succeeded.');
})
```
### release9+
release(): Promise\
Releases this **Image** instance. This API uses a promise to return the result.
The corresponding resources must be released before another image arrives.
**System capability**: SystemCapability.Multimedia.Image.Core
**Return value**
| Type | Description |
| -------------- | --------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```js
img.release().then(() =>{
console.log('release succeeded.');
}).catch(error => {
console.log('release failed.');
})
```
## PositionArea7+
Describes area information in an image.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ------ | ------------------ | ---- | ---- | ------------------------------------------------------------ |
| pixels | ArrayBuffer | Yes | No | Pixels of the image. |
| offset | number | Yes | No | Offset for data reading. |
| stride | number | Yes | No | Number of bytes from one row of pixels in memory to the next row of pixels in memory. The value of **stride** must be greater than or equal to the value of **region.size.width** multiplied by 4. |
| region | [Region](#region7) | Yes | No | Region to read or write. The width of the region to write plus the X coordinate cannot be greater than the width of the original image. The height of the region to write plus the Y coordinate cannot be greater than the height of the original image.|
## ImageInfo
Describes image information.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name| Type | Readable| Writable| Description |
| ---- | ------------- | ---- | ---- | ---------- |
| size | [Size](#size) | Yes | Yes | Image size.|
## Size
Describes the size of an image.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ------ | ------ | ---- | ---- | -------------- |
| height | number | Yes | Yes | Image height.|
| width | number | Yes | Yes | Image width.|
## PixelMapFormat7+
Enumerates the pixel formats of images.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Default Value| Description |
| ---------------------- | ------ | ----------------- |
| UNKNOWN | 0 | Unknown format. |
| RGB_565 | 2 | RGB_565. |
| RGBA_8888 | 3 | RGBA_8888.|
| BGRA_88889+ | 4 | BGRA_8888.|
## AlphaType9+
Enumerates the alpha types of images.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Default Value| Description |
| -------- | ------ | ----------------------- |
| UNKNOWN | 0 | Unknown alpha type. |
| OPAQUE | 1 | There is no alpha or the image is opaque.|
| PREMUL | 2 | Premultiplied alpha. |
| UNPREMUL | 3 | Unpremultiplied alpha, that is, straight alpha. |
## ScaleMode9+
Enumerates the scale modes of images.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Default Value| Description |
| --------------- | ------ | -------------------------------------------------- |
| CENTER_CROP | 1 | Scales the image so that it fills the requested bounds of the target and crops the extra.|
| FIT_TARGET_SIZE | 0 | Reduces the image size to the dimensions of the target. |
## SourceOptions9+
Defines image source initialization options.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ----------------- | ---------------------------------- | ---- | ---- | ------------------ |
| sourceDensity | number | Yes | Yes | Density of the image source.|
| sourcePixelFormat | [PixelMapFormat](#pixelmapformat7) | Yes | Yes | Pixel format of the image source. |
| sourceSize | [Size](#size) | Yes | Yes | Pixel size of the image source. |
## InitializationOptions8+
Defines pixel map initialization options.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ------------------------ | ---------------------------------- | ---- | ---- | -------------- |
| alphaType9+ | [AlphaType](#alphatype9) | Yes | Yes | Alpha type. |
| editable | boolean | Yes | Yes | Whether the image is editable. |
| pixelFormat | [PixelMapFormat](#pixelmapformat7) | Yes | Yes | Pixel map format. |
| scaleMode9+ | [ScaleMode](#scalemode9) | Yes | Yes | Scale mode. |
| size | [Size](#size) | Yes | Yes | Image size.|
## DecodingOptions7+
Defines image decoding options.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
| Name | Type | Readable| Writable| Description |
| ------------------ | ---------------------------------- | ---- | ---- | ---------------- |
| sampleSize | number | Yes | Yes | Thumbnail sampling size.|
| rotate | number | Yes | Yes | Rotation angle. |
| editable | boolean | Yes | Yes | Whether the image is editable. |
| desiredSize | [Size](#size) | Yes | Yes | Expected output size. |
| desiredRegion | [Region](#region7) | Yes | Yes | Region to decode. |
| desiredPixelFormat | [PixelMapFormat](#pixelmapformat7) | Yes | Yes | Pixel map format for decoding.|
| index | number | Yes | Yes | Index of the image to decode. |
## Region7+
Describes region information.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name| Type | Readable| Writable| Description |
| ---- | ------------- | ---- | ---- | ------------ |
| size | [Size](#size) | Yes | Yes | Region size. |
| x | number | Yes | Yes | X coordinate of the region.|
| y | number | Yes | Yes | Y coordinate of the region.|
## PackingOption
Defines the option for image packing.
**System capability**: SystemCapability.Multimedia.Image.ImagePacker
| Name | Type | Readable| Writable| Description |
| ------- | ------ | ---- | ---- | --------------------------------------------------- |
| format | string | Yes | Yes | Format of the packed image.
Currently, the following raw formats are supported: .jpg, .png, .gif, .bmp, and .webp. |
| quality | number | Yes | Yes | Quality of the output image during JPEG encoding. The value ranges from 1 to 100.|
## GetImagePropertyOptions7+
Describes image properties.
**System capability**: SystemCapability.Multimedia.Image.ImageSource
| Name | Type | Readable| Writable| Description |
| ------------ | ------ | ---- | ---- | ------------ |
| index | number | Yes | Yes | Index of an image. |
| defaultValue | string | Yes | Yes | Default property value.|
## PropertyKey7+
Describes the exchangeable image file format (EXIF) information of an image.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Default Value | Description |
| ----------------- | ----------------------- | ------------------------ |
| BITS_PER_SAMPLE | "BitsPerSample" | Number of bits per pixel. |
| ORIENTATION | "Orientation" | Image orientation. |
| IMAGE_LENGTH | "ImageLength" | Image length. |
| IMAGE_WIDTH | "ImageWidth" | Image width. |
| GPS_LATITUDE | "GPSLatitude" | Image latitude. |
| GPS_LONGITUDE | "GPSLongitude" | Image longitude. |
| GPS_LATITUDE_REF | "GPSLatitudeRef" | Latitude reference, for example, N or S. |
| GPS_LONGITUDE_REF | "GPSLongitudeRef" | Longitude reference, for example, W or E. |
## ImageFormat9+
Enumerates the image formats.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Default Value| Description |
| ------------ | ------ | -------------------- |
| YCBCR_422_SP | 1000 | YCBCR422 semi-planar format.|
| JPEG | 2000 | JPEG encoding format. |
## ComponentType9+
Enumerates the color component types of images.
**System capability**: SystemCapability.Multimedia.Image.ImageReceiver
| Name | Default Value| Description |
| ----- | ------ | ----------- |
| YUV_Y | 1 | Luminance component. |
| YUV_U | 2 | Chrominance component. |
| YUV_V | 3 | Chrominance component. |
| JPEG | 4 | JPEG type.|
## Component9+
Describes the color components of an image.
**System capability**: SystemCapability.Multimedia.Image.Core
| Name | Type | Readable| Writable| Description |
| ------------- | -------------------------------- | ---- | ---- | ------------ |
| componentType | [ComponentType](#componenttype9) | Yes | No | Color component type. |
| rowStride | number | Yes | No | Row stride. |
| pixelStride | number | Yes | No | Pixel stride. |
| byteBuffer | ArrayBuffer | Yes | No | Component buffer.|
## ResponseCode
Enumerates the response codes returned upon build errors.
| Name | Value | Description |
| ----------------------------------- | -------- | --------------------------------------------------- |
| ERR_MEDIA_INVALID_VALUE | -1 | Invalid value. |
| SUCCESS | 0 | Operation successful. |
| ERROR | 62980096 | Operation failed. |
| ERR_IPC | 62980097 | IPC error. |
| ERR_SHAMEM_NOT_EXIST | 62980098 | The shared memory does not exist. |
| ERR_SHAMEM_DATA_ABNORMAL | 62980099 | The shared memory is abnormal. |
| ERR_IMAGE_DECODE_ABNORMAL | 62980100 | An error occurs during image decoding. |
| ERR_IMAGE_DATA_ABNORMAL | 62980101 | The input image data is incorrect. |
| ERR_IMAGE_MALLOC_ABNORMAL | 62980102 | An error occurs during image memory allocation. |
| ERR_IMAGE_DATA_UNSUPPORT | 62980103 | Unsupported image type. |
| ERR_IMAGE_INIT_ABNORMAL | 62980104 | An error occurs during image initialization. |
| ERR_IMAGE_GET_DATA_ABNORMAL | 62980105 | An error occurs during image data retrieval. |
| ERR_IMAGE_TOO_LARGE | 62980106 | The image data is too large. |
| ERR_IMAGE_TRANSFORM | 62980107 | An error occurs during image transformation. |
| ERR_IMAGE_COLOR_CONVERT | 62980108 | An error occurs during image color conversion. |
| ERR_IMAGE_CROP | 62980109 | An error occurs during image cropping. |
| ERR_IMAGE_SOURCE_DATA | 62980110 | The image source data is incorrect. |
| ERR_IMAGE_SOURCE_DATA_INCOMPLETE | 62980111 | The image source data is incomplete. |
| ERR_IMAGE_MISMATCHED_FORMAT | 62980112 | The image formats do not match. |
| ERR_IMAGE_UNKNOWN_FORMAT | 62980113 | Unknown image format. |
| ERR_IMAGE_SOURCE_UNRESOLVED | 62980114 | The image source is not parsed. |
| ERR_IMAGE_INVALID_PARAMETER | 62980115 | Invalid image parameter. |
| ERR_IMAGE_DECODE_FAILED | 62980116 | Decoding failed. |
| ERR_IMAGE_PLUGIN_REGISTER_FAILED | 62980117 | Failed to register the plug-in. |
| ERR_IMAGE_PLUGIN_CREATE_FAILED | 62980118 | Failed to create the plug-in. |
| ERR_IMAGE_ENCODE_FAILED | 62980119 | Failed to encode the image. |
| ERR_IMAGE_ADD_PIXEL_MAP_FAILED | 62980120 | Failed to add the image pixel map. |
| ERR_IMAGE_HW_DECODE_UNSUPPORT | 62980121 | Unsupported image hardware decoding. |
| ERR_IMAGE_DECODE_HEAD_ABNORMAL | 62980122 | The image decoding header is incorrect. |
| ERR_IMAGE_DECODE_EXIF_UNSUPPORT | 62980123 | EXIF decoding is not supported. |
| ERR_IMAGE_PROPERTY_NOT_EXIST | 62980124 | The image property does not exist. The error codes for the image start from 150.|
| ERR_IMAGE_READ_PIXELMAP_FAILED | 62980246 | Failed to read the pixel map. |
| ERR_IMAGE_WRITE_PIXELMAP_FAILED | 62980247 | Failed to write the pixel map. |
| ERR_IMAGE_PIXELMAP_NOT_ALLOW_MODIFY | 62980248 | Modification to the pixel map is not allowed. |
| ERR_IMAGE_CONFIG_FAILED | 62980259 | The configuration is incorrect. |