# Interface (AuxiliaryPicture)
> **说明:**
>
> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本Interface首批接口从API version 13开始支持。
辅助图一般用于辅助主图进行特殊信息的展示,使图像包含更丰富的信息。辅助图图像类,用于读取或写入图像的辅助图数据以及获取图像的辅助图信息。在调用AuxiliaryPicture的方法前,需要先通过[createAuxiliaryPicture](arkts-apis-image-f.md#imagecreateauxiliarypicture13)创建一个AuxiliaryPicture实例。
## 导入模块
```ts
import { image } from '@kit.ImageKit';
```
## writePixelsFromBuffer13+
writePixelsFromBuffer(data: ArrayBuffer): Promise\
读取ArrayBuffer中的辅助图片数据,并将数据写入AuxiliaryPicture对象,使用Promise形式返回。
**系统能力:** SystemCapability.Multimedia.Image.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------- | ---- | ---------------- |
| data | ArrayBuffer | 是 | 辅助图像素数据。 |
**返回值:**
| 类型 | 说明 |
| -------------- | -------------------------------------- |
| Promise\ | Promise对象。无返回结果的Promise对象。 |
**错误码:**
以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
async function WritePixelsFromBuffer(context: Context) {
const resourceMgr = context.resourceManager;
const rawFile = await resourceMgr.getRawFileContent("hdr.jpg"); // 需要支持hdr的图片。
let ops: image.SourceOptions = {
sourceDensity: 98,
}
let imageSource: image.ImageSource = image.createImageSource(rawFile.buffer as ArrayBuffer, ops);
let commodityPixelMap: image.PixelMap = await imageSource.createPixelMap();
let pictureObj: image.Picture = image.createPicture(commodityPixelMap);
let auxPictureObj: image.AuxiliaryPicture | null = pictureObj.getAuxiliaryPicture(image.AuxiliaryPictureType.GAINMAP);
if(auxPictureObj != null) {
let auxBuffer: ArrayBuffer = await auxPictureObj.readPixelsToBuffer();
await auxPictureObj.writePixelsFromBuffer(auxBuffer);
console.info('Write pixels from buffer success.');
} else {
console.error('AuxPictureObj is null.');
}
}
```
## readPixelsToBuffer13+
readPixelsToBuffer(): Promise\
读取图像像素映射数据并将数据写入ArrayBuffer,使用Promise形式返回。
**系统能力:** SystemCapability.Multimedia.Image.Core
**返回值:**
| 类型 | 说明 |
| --------------------- | --------------------------------- |
| Promise\ | Promise对象。返回辅助图像素数据。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
async function ReadPixelsToBuffer(context: Context) {
const resourceMgr = context.resourceManager;
const rawFile = await resourceMgr.getRawFileContent("hdr.jpg"); // 需要支持hdr的图片。
let ops: image.SourceOptions = {
sourceDensity: 98,
}
let imageSource: image.ImageSource = image.createImageSource(rawFile.buffer as ArrayBuffer, ops);
let commodityPixelMap: image.PixelMap = await imageSource.createPixelMap();
let pictureObj: image.Picture = image.createPicture(commodityPixelMap);
let auxPictureObj: image.AuxiliaryPicture | null = pictureObj.getAuxiliaryPicture(image.AuxiliaryPictureType.GAINMAP);
if(auxPictureObj != null) {
await auxPictureObj.readPixelsToBuffer().then((pixelsBuffer: ArrayBuffer) => {
console.info('Read pixels to buffer success.' );
}).catch((error: BusinessError) => {
console.error(`Read pixels to buffer failed error.code: ${error.code}, error.message: ${error.message}`);
});
} else {
console.error('AuxPictureObj is null.');
}
}
```
## getType13+
getType(): AuxiliaryPictureType
获取辅助图的类型。
**系统能力:** SystemCapability.Multimedia.Image.Core
**返回值:**
| 类型 | 说明 |
| ----------------------------------------------- | ---------------------------- |
| [AuxiliaryPictureType](arkts-apis-image-e.md#auxiliarypicturetype13) | 操作成功,返回辅助图的类型。 |
**示例:**
```ts
async function GetAuxiliaryPictureType(auxPictureObj : image.AuxiliaryPicture) {
if (auxPictureObj != null) {
let type: image.AuxiliaryPictureType = auxPictureObj.getType();
console.info('Success get auxiliary picture type ' + JSON.stringify(type));
} else {
console.error('Failed get auxiliary picture type ');
}
}
```
## setMetadata13+
setMetadata(metadataType: MetadataType, metadata: Metadata): Promise\
设置辅助图元数据。
**系统能力:** SystemCapability.Multimedia.Image.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------- | ---- | ------------------------------------ |
| metadataType | [MetadataType](arkts-apis-image-e.md#metadatatype13) | 是 | 元数据的类型,用于设置对应的元数据。 |
| metadata | [Metadata](arkts-apis-image-Metadata.md) | 是 | 元数据对象。 |
**返回值:**
| 类型 | 说明 |
| -------------- | -------------------------------------- |
| Promise\ | Promise对象,无返回结果的Promise对象。 |
**错误码:**
以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 7600202 | Unsupported metadata. Possible causes: 1. Unsupported metadata type. 2. The metadata type does not match the auxiliary picture type. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
async function SetAuxPictureObjMetadata(exifContext: Context, auxPictureObj: image.AuxiliaryPicture) {
const exifResourceMgr = exifContext.resourceManager;
const exifRawFile = await exifResourceMgr.getRawFileContent("exif.jpg");// 图片包含exif metadata。
let exifOps: image.SourceOptions = {
sourceDensity: 98,
}
let exifImageSource: image.ImageSource = image.createImageSource(exifRawFile.buffer as ArrayBuffer, exifOps);
let exifCommodityPixelMap: image.PixelMap = await exifImageSource.createPixelMap();
let exifPictureObj: image.Picture = image.createPicture(exifCommodityPixelMap);
if (exifPictureObj != null) {
console.info('Create picture succeeded');
} else {
console.error('Create picture failed');
}
if (auxPictureObj != null) {
let metadataType: image.MetadataType = image.MetadataType.EXIF_METADATA;
let exifMetaData: image.Metadata = await exifPictureObj.getMetadata(metadataType);
auxPictureObj.setMetadata(metadataType, exifMetaData).then(() => {
console.info('Set metadata success');
}).catch((error: BusinessError) => {
console.error(`Set metadata failed.error.code: ${error.code}, error.message: ${error.message}`);
});
} else {
console.error('AuxPictureObjMetaData is null');
}
}
```
## getMetadata13+
getMetadata(metadataType: MetadataType): Promise\
从辅助图中获取元数据。
**系统能力:** SystemCapability.Multimedia.Image.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------------------------- | ---- | -------------------------------------- |
| metadataType | [MetadataType](arkts-apis-image-e.md#metadatatype13) | 是 | 元数据类型,用于获取对应类型的元数据。 |
**返回值:**
| 类型 | 说明 |
| -------------------------------- | ---------------- |
| Promise<[Metadata](arkts-apis-image-Metadata.md)> | 返回元数据对象。 |
**错误码:**
以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
| 7600202 | Unsupported metadata. Possible causes: 1. Unsupported metadata type. 2. The metadata type does not match the auxiliary picture type. |
**示例:**
```ts
async function GetAuxPictureObjMetadata(auxPictureObj: image.AuxiliaryPicture) {
if (auxPictureObj != null) {
let metadataType: image.MetadataType = image.MetadataType.EXIF_METADATA;
let auxPictureObjMetaData: image.Metadata | null = await auxPictureObj.getMetadata(metadataType);
if (auxPictureObjMetaData != null) {
console.info('Get AuxPictureObj Metadata success' );
} else {
console.error('Get AuxPictureObj Metadata failed');
}
} else {
console.error('Get AuxPictureObj is null.');
}
}
```
## getAuxiliaryPictureinfo13+
getAuxiliaryPictureInfo(): AuxiliaryPictureInfo
获取有关此辅助图的图像信息。
**系统能力:** SystemCapability.Multimedia.Image.Core
**返回值:**
| 类型 | 说明 |
| ----------------------------------------------- | --------------------------------- |
| [AuxiliaryPictureInfo](arkts-apis-image-i.md#auxiliarypictureinfo13) | Promise对象,返回辅助图图像信息。 |
**示例:**
```ts
async function GetAuxiliaryPictureInfo(auxPictureObj: image.AuxiliaryPicture) {
if(auxPictureObj != null) {
let auxinfo: image.AuxiliaryPictureInfo = auxPictureObj.getAuxiliaryPictureInfo();
console.info('GetAuxiliaryPictureInfo Type: ' + auxinfo.auxiliaryPictureType +
' height: ' + auxinfo.size.height + ' width: ' + auxinfo.size.width +
' rowStride: ' + auxinfo.rowStride + ' pixelFormat: ' + auxinfo.pixelFormat +
' colorSpace: ' + auxinfo.colorSpace);
} else {
console.error('Get auxiliary picture information failed');
}
}
```
## setAuxiliaryPictureinfo13+
setAuxiliaryPictureInfo(info: AuxiliaryPictureInfo): void
设置辅助图的图像信息。
**系统能力:** SystemCapability.Multimedia.Image.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------------------------- | ---- | ------------------ |
| info | [AuxiliaryPictureInfo](arkts-apis-image-i.md#auxiliarypictureinfo13) | 是 | 辅助图的图像信息。 |
**错误码:**
以下错误码的详细介绍请参见[Image错误码](errorcode-image.md)。
| 错误码ID | 错误信息 |
| -------- | :----------------------------------------------------------- |
| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
**示例:**
```ts
import { colorSpaceManager } from '@kit.ArkGraphics2D';
async function SetAuxiliaryPictureInfo(auxPictureObj: image.AuxiliaryPicture) {
if(auxPictureObj != null) {
let colorSpaceName = colorSpaceManager.ColorSpace.SRGB;
let info: image.AuxiliaryPictureInfo = {
auxiliaryPictureType: image.AuxiliaryPictureType.GAINMAP,
size: {height: 100, width: 200},
pixelFormat: image.PixelMapFormat.RGBA_8888,
rowStride: 0,
colorSpace: colorSpaceManager.create(colorSpaceName),
};
auxPictureObj.setAuxiliaryPictureInfo(info);
}
}
```
## release13+
release():void
释放辅助图对象,无返回值。
**系统能力:** SystemCapability.Multimedia.Image.Core
**示例:**
```ts
async function Release(auxPictureObj: image.AuxiliaryPicture) {
let funcName = "Release";
if (auxPictureObj != null) {
auxPictureObj.release();
if (auxPictureObj.getType() == null) {
console.info(funcName, 'Success !');
} else {
console.error(funcName, 'Failed !');
}
} else {
console.error('PictureObj is null');
}
}
```