# Encode

#### 函数功能

ImageProcessor类的图片编码接口，使用该接口申请的Image内存无需用户管理，由内部管理释放。

- 输入图像的最大分辨率：8192 * 8192。
- 输入图像的最小分辨率：32 * 32。
- 输入图像的真实宽、高均为偶数，若为奇数，则自动向上取偶数，编码出的图片自动补边1像素。
- 输入图像的宽：对于YUV420SP或RGB数据，对齐到16。
- 输入图像的高：与输入图片的高度相同的数值，或为输入图片的高度向上对齐到16的数值（最小为32）。
- 输入图像格式：

  - Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420（nv12、nv21）。
- 输出图片格式：jpeg压缩格式的图片文件，例如*.jpg。


#### 函数原型

```
APP_ERROR Encode(const Image& inputImage, const std::string savePath, const uint32_t encodeLevel = 100);
APP_ERROR Encode(const Image& inputImage, std::shared_ptr<uint8_t>& outDataPtr, uint32_t& outDataSize, const uint32_t encodeLevel = 100);
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| inputImage | 输入 | 输入编码前的Image类。Decode接口和其他VPC接口获取的Image类可以直接作为输入。 若是用户自定义构造的Image类，则需要设置图像宽高。 |
| encodeLevel | 输入 | 默认为“100”，输入编码的级别[0, 100]。 |
| savePath | 输入 | 输入编码后保存的图片路径，文件后缀名限制为jpg。 |
| outDataPtr | 输出 | 输出编码后的图片内存数据地址。 |
| outDataSize | 输出 | 输出编码后的图片内存数据大小。 |


#### 返回参数说明

| 数据结构 | 说明 |
| --- | --- |
| APP\_ERROR | 程序执行返回的错误码，请参考APP\_ERROR说明。 |
