# image_mdk.h

#### 概述

声明访问图像矩形、大小、格式和组件数据的函数。

**引用文件：** <multimedia/image\_framework/image\_mdk.h>

**库：** libimage\_ndk.z.so

**系统能力：** SystemCapability.Multimedia.Image.Core

**起始版本：** 10

**相关模块：** Image

#### 汇总

#### 结构体

| 名称 | typedef关键字 | 描述 |
| --- | --- | --- |
| OhosImageRect | - | 定义图像矩形信息。 |
| ImageNative_ | ImageNative | 为图像接口定义native层图像对象。 |
| OhosImageComponent | - | 定义图像组成信息。 |

#### 枚举

| 名称 | 描述 |
| --- | --- |
| 图像格式 | 图像格式枚举值。 |
| 图像颜色通道类型 | 图像颜色通道类型枚举值。 |

#### 函数

| 名称 | 描述 |
| --- | --- |
| ImageNative* OH_Image_InitImageNative(napi_env env, napi_value source) | 从输入的JavaScript Native API图像对象中解析native ImageNative对象。 |
| int32_t OH_Image_ClipRect(const ImageNative* native, struct OhosImageRect* rect) | 获取native ImageNative对象OhosImageRect信息。 |
| int32_t OH_Image_Size(const ImageNative* native, struct OhosImageSize* size) | 获取native ImageNative对象的OhosImageSize信息。 |
| int32_t OH_Image_Format(const ImageNative* native, int32_t* format) | 获取native ImageNative对象的图像格式。 |
| int32_t OH_Image_GetComponent(const ImageNative* native, int32_t componentType, struct OhosImageComponent* componentNative) | 从native ImageNative对象中获取OhosImageComponent。 |
| int32_t OH_Image_Release(ImageNative* native) | 释放ImageNative native对象。 这个方法无法释放JavaScript Native API Image对象，而是释放被OH_Image_InitImageNative解析的ImageNative native对象。 |

#### 枚举类型说明

#### 图像格式

```
enum anonymous enum
```

**描述**

图像格式枚举值。

**起始版本：** 10

| 枚举项 | 描述 |
| --- | --- |
| OHOS_IMAGE_FORMAT_YCBCR_422_SP = 1000 | YCBCR422 semi-planar格式。 |
| OHOS_IMAGE_FORMAT_JPEG = 2000 | JPEG编码格式。 |

#### 图像颜色通道类型

```
enum anonymous enum
```

**描述**

图像颜色通道类型枚举值。

**起始版本：** 10

| 枚举项 | 描述 |
| --- | --- |
| OHOS_IMAGE_COMPONENT_FORMAT_YUV_Y = 1 | 亮度信息。 |
| OHOS_IMAGE_COMPONENT_FORMAT_YUV_U = 2 | 色度信息。 |
| OHOS_IMAGE_COMPONENT_FORMAT_YUV_V = 3 | 色差值信息。 |
| OHOS_IMAGE_COMPONENT_FORMAT_JPEG = 4 | JPEG格式。 |

#### 函数说明

#### OH\_Image\_InitImageNative()

```
ImageNative* OH_Image_InitImageNative(napi_env env, napi_value source)
```

**描述**

从输入的JavaScript Native API图像对象中解析native ImageNative对象。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| napi_env env | 表示指向JNI环境的指针。 |
| napi_value source | 表示JavaScript Native API图像对象。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| ImageNative* | 如果操作成功返回ImageNative指针对象，如果操作失败返回空指针。 |

**参考：**

OH\_Image\_Release

#### OH\_Image\_ClipRect()

```
int32_t OH_Image_ClipRect(const ImageNative* native, struct OhosImageRect* rect)
```

**描述**

获取native ImageNative对象OhosImageRect信息。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const ImageNative* native | 表示指向ImageNative native层对象的指针。 |
| struct OhosImageRect* rect | 表示作为转换结果的OhosImageRect对象指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| int32_t | IRNdkErrCode： IMAGE_RESULT_SUCCESS：操作成功。 IMAGE_RESULT_JNI_ENV_ABNORMAL：JNI环境异常。 IMAGE_RESULT_INVALID_PARAMETER：参数无效。 IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED：从surface获取参数失败。 IMAGE_RESULT_BAD_PARAMETER：参数错误。 |

#### OH\_Image\_Size()

```
int32_t OH_Image_Size(const ImageNative* native, struct OhosImageSize* size)
```

**描述**

获取native ImageNative对象的OhosImageSize信息。

如果ImageNative对象所存储的是相机预览流数据，即YUV图像数据，那么获取到的OhosImageSize中的宽高分别对应YUV图像的宽高；如果ImageNative对象所存储的是相机拍照流数据，即JPEG图像，由于已经是编码后的数据，OhosImageSize中的宽等于JPEG数据大小，高等于1。

ImageNative对象所存储的数据是预览流还是拍照流，取决于应用将receiver中的surfaceId传给相机的previewOutput还是captureOutput。相机预览与拍照最佳实践请参考预览流二次处理(C/C++)与拍照(C/C++)。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const ImageNative* native | 表示ImageNative native对象的指针。 |
| struct OhosImageSize* size | 表示作为转换结果的OhosImageSize对象的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| int32_t | IRNdkErrCode： IMAGE_RESULT_SUCCESS：操作成功。 IMAGE_RESULT_JNI_ENV_ABNORMAL：JNI环境异常。 IMAGE_RESULT_INVALID_PARAMETER：参数无效。 IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED：从surface获取参数失败。 IMAGE_RESULT_BAD_PARAMETER：参数错误。 |

#### OH\_Image\_Format()

```
int32_t OH_Image_Format(const ImageNative* native, int32_t* format)
```

**描述**

获取native ImageNative对象的图像格式。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const ImageNative* native | 表示ImageNative native对象的指针。 |
| int32_t* format | 表示作为转换结果的图像格式对象的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| int32_t | IRNdkErrCode： IMAGE_RESULT_SUCCESS：操作成功。 IMAGE_RESULT_JNI_ENV_ABNORMAL：JNI环境异常。 IMAGE_RESULT_INVALID_PARAMETER：参数无效。 IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED：从surface获取参数失败。 IMAGE_RESULT_BAD_PARAMETER：参数错误。 |

#### OH\_Image\_GetComponent()

```
int32_t OH_Image_GetComponent(const ImageNative* native, int32_t componentType, struct OhosImageComponent* componentNative)
```

**描述**

从native ImageNative对象中获取OhosImageComponent。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| const ImageNative* native | 表示ImageNative native对象的指针。 |
| int32_t componentType | 表示所需组件的组件类型。 |
| struct OhosImageComponent* componentNative | 表示转换结果的OhosImageComponent对象的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| int32_t | IRNdkErrCode： IMAGE_RESULT_SUCCESS：操作成功。 IMAGE_RESULT_JNI_ENV_ABNORMAL：JNI环境异常。 IMAGE_RESULT_INVALID_PARAMETER：参数无效。 IMAGE_RESULT_SURFACE_GET_PARAMETER_FAILED：从surface获取参数失败。 IMAGE_RESULT_BAD_PARAMETER：参数错误。 |

#### OH\_Image\_Release()

```
int32_t OH_Image_Release(ImageNative* native)
```

**描述**

释放ImageNative native对象。

这个方法无法释放JavaScript Native API Image对象，而是释放被OH\_Image\_InitImageNative解析的ImageNative native对象。

**起始版本：** 10

**参数：**

| 参数项 | 描述 |
| --- | --- |
| ImageNative* native | 表示ImageNative native对象的指针。 |

**返回：**

| 类型 | 说明 |
| --- | --- |
| int32_t | IRNdkErrCode： IMAGE_RESULT_SUCCESS：操作成功。 IMAGE_RESULT_JNI_ENV_ABNORMAL：JNI环境异常。 IMAGE_RESULT_INVALID_PARAMETER：参数无效。 IMAGE_RESULT_BAD_PARAMETER：参数错误。 |

**参考：**

OH\_Image\_InitImageNative