# ImageEffect ## 概述 提供图片编辑能力。 对应的开发指南及样例可参考[使用ImageEffect编辑图片](../../media/image/image-effect-guidelines.md)。 **起始版本:** 12 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [image_effect.h](image__effect_8h.md) | 声明效果器相关接口。 | | [image_effect_errors.h](image__effect__errors_8h.md) | 声明图片效果器错误码。 | | [image_effect_filter.h](image__effect__filter_8h.md) | 声明滤镜相关接口。 | ### 结构体 | 名称 | 描述 | | -------- | -------- | | union [ImageEffect_DataValue](union_image_effect___data_value.md) | 数据值联合体。 | | struct [ImageEffect_Any](_image_effect___any.md) | 参数结构体。 | | struct [ImageEffect_FilterNames](_image_effect___filter_names.md) | 滤镜名信息。 | | struct [ImageEffect_FilterDelegate](_image_effect___filter_delegate.md) | 自定义滤镜回调函数结构体。 | | struct [ImageEffect_Region](_image_effect___region.md) | 图像区域结构体。 | | struct [ImageEffect_Size](_image_effect___size.md) | 图像尺寸结构体。 | ### 宏定义 | 名称 | 描述 | | -------- | -------- | | [OH_EFFECT_BRIGHTNESS_FILTER](#oh_effect_brightness_filter) "Brightness" | 亮度滤镜,对应的参数为OH_EFFECT_FILTER_INTENSITY_KEY,参数类型为EFFECT_DATA_TYPE_FLOAT。 | | [OH_EFFECT_CONTRAST_FILTER](#oh_effect_contrast_filter) "Contrast" | 对比度滤镜,对应的参数为OH_EFFECT_FILTER_INTENSITY_KEY,参数类型为EFFECT_DATA_TYPE_FLOAT。 | | [OH_EFFECT_CROP_FILTER](#oh_effect_crop_filter) "Crop" | 裁剪滤镜,对应的参数为OH_EFFECT_FILTER_REGION_KEY,参数类型为EFFECT_DATA_TYPE_PTR, 参数值为结构体 [ImageEffect_Region](_image_effect___region.md)。 | | [OH_EFFECT_FILTER_INTENSITY_KEY](#oh_effect_filter_intensity_key) "FilterIntensity" | 强度参数。 | | [OH_EFFECT_FILTER_REGION_KEY](#oh_effect_filter_region_key) "FilterRegion" | 图像区域参数。 | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | typedef struct [OH_ImageEffect](#oh_imageeffect) [OH_ImageEffect](#oh_imageeffect) | 定义效果器结构类型。 | | typedef enum [ImageEffect_ErrorCode](#imageeffect_errorcode-1) [ImageEffect_ErrorCode](#imageeffect_errorcode) | 效果器错误码。 | | typedef struct [OH_EffectFilter](#oh_effectfilter) [OH_EffectFilter](#oh_effectfilter) | 定义滤镜结构类型。 | | typedef enum [ImageEffect_DataType](#imageeffect_datatype) [ImageEffect_DataType](#imageeffect_datatype) | 数据类型枚举值。 | | typedef union [ImageEffect_DataValue](union_image_effect___data_value.md) [ImageEffect_DataValue](#imageeffect_datavalue) | 数据值联合体。 | | typedef struct [ImageEffect_Any](_image_effect___any.md) [ImageEffect_Any](#imageeffect_any) | 参数结构体。 | | typedef enum [ImageEffect_Format](#imageeffect_format-1) [ImageEffect_Format](#imageeffect_format) | 像素格式枚举值。 | | typedef enum [ImageEffect_BufferType](#imageeffect_buffertype-1) [ImageEffect_BufferType](#imageeffect_buffertype) | 内存类型枚举值。 | | typedef struct [OH_EffectFilterInfo](#oh_effectfilterinfo) [OH_EffectFilterInfo](#oh_effectfilterinfo) | 定义滤镜信息结构体。 | | typedef struct [ImageEffect_FilterNames](_image_effect___filter_names.md) [ImageEffect_FilterNames](#imageeffect_filternames) | 滤镜名信息。 | | typedef struct [OH_EffectBufferInfo](#oh_effectbufferinfo) [OH_EffectBufferInfo](#oh_effectbufferinfo) | 定义图像信息。 | | typedef bool(\* [OH_EffectFilterDelegate_SetValue](#oh_effectfilterdelegate_setvalue)) ([OH_EffectFilter](#oh_effectfilter) \*filter, const char \*key, const [ImageEffect_Any](_image_effect___any.md) \*value) | 自定义滤镜设置参数的回调函数,用于开发者校验参数及参数值。 | | typedef void(\* [OH_EffectFilterDelegate_PushData](#oh_effectfilterdelegate_pushdata)) ([OH_EffectFilter](#oh_effectfilter) \*filter, [OH_EffectBufferInfo](#oh_effectbufferinfo) \*info) | 自定义滤镜传递图像信息到下一级滤镜的函数指针。 | | typedef bool(\* [OH_EffectFilterDelegate_Render](#oh_effectfilterdelegate_render)) ([OH_EffectFilter](#oh_effectfilter) \*filter, [OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, [OH_EffectFilterDelegate_PushData](#oh_effectfilterdelegate_pushdata) pushData) | 自定义滤镜渲染图像的回调函数。 | | typedef bool(\* [OH_EffectFilterDelegate_Save](#oh_effectfilterdelegate_save)) ([OH_EffectFilter](#oh_effectfilter) \*filter, char \*\*info) | 自定义滤镜序列化的回调函数,按照JSON格式进行滤镜序列化处理。 | | typedef [OH_EffectFilter](#oh_effectfilter) \*(\* [OH_EffectFilterDelegate_Restore](#oh_effectfilterdelegate_restore)) (const char \*info) | 自定义滤镜反序列化的回调函数。 | | typedef struct [ImageEffect_FilterDelegate](_image_effect___filter_delegate.md) [ImageEffect_FilterDelegate](#imageeffect_filterdelegate) | 自定义滤镜回调函数结构体。 | | typedef struct [ImageEffect_Region](_image_effect___region.md) [ImageEffect_Region](#imageeffect_region) | 图像区域结构体。 | | typedef struct [ImageEffect_Size](_image_effect___size.md) [ImageEffect_Size](#imageeffect_size) | 图像尺寸结构体。 | ### 枚举 | 名称 | 描述 | | -------- | -------- | | [ImageEffect_ErrorCode](#imageeffect_errorcode-1) {
EFFECT_SUCCESS = 0, EFFECT_ERROR_PERMISSION_DENIED = 201,
EFFECT_ERROR_PARAM_INVALID = 401, EFFECT_BUFFER_SIZE_NOT_MATCH = 29000001,
EFFECT_COLOR_SPACE_NOT_MATCH = 29000002, EFFECT_INPUT_OUTPUT_NOT_MATCH = 29000101,
EFFECT_EFFECT_NUMBER_LIMITED = 29000102, EFFECT_INPUT_OUTPUT_NOT_SUPPORTED = 29000103,
EFFECT_ALLOCATE_MEMORY_FAILED = 29000104, EFFECT_PARAM_ERROR = 29000121,
EFFECT_KEY_ERROR = 29000122, EFFECT_UNKNOWN = 29000199
} | 效果器错误码。 | | [ImageEffect_DataType](#imageeffect_datatype-1) {
EFFECT_DATA_TYPE_UNKNOWN = 0, EFFECT_DATA_TYPE_INT32 = 1,
EFFECT_DATA_TYPE_FLOAT = 2, EFFECT_DATA_TYPE_DOUBLE = 3,
EFFECT_DATA_TYPE_CHAR = 4, EFFECT_DATA_TYPE_LONG = 5,
EFFECT_DATA_TYPE_BOOL = 6, EFFECT_DATA_TYPE_PTR = 7
} | 数据类型枚举值。 | | [ImageEffect_Format](#imageeffect_format-1) {
EFFECT_PIXEL_FORMAT_UNKNOWN = 0, EFFECT_PIXEL_FORMAT_RGBA8888 = 1,
EFFECT_PIXEL_FORMAT_NV21 = 2, EFFECT_PIXEL_FORMAT_NV12 = 3,
EFFECT_PIXEL_FORMAT_RGBA1010102 = 4, EFFECT_PIXEL_FORMAT_YCBCR_P010 = 5,
EFFECT_PIXEL_FORMAT_YCRCB_P010 = 6
} | 像素格式枚举值。 | | [ImageEffect_BufferType](#imageeffect_buffertype-1) { EFFECT_BUFFER_TYPE_UNKNOWN = 0,
EFFECT_BUFFER_TYPE_PIXEL = 1, EFFECT_BUFFER_TYPE_TEXTURE = 2 } | 内存类型枚举值。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | [OH_ImageEffect](#oh_imageeffect) \* [OH_ImageEffect_Create](#oh_imageeffect_create) (const char \*name) | 创建OH_ImageEffect实例,调用[OH_ImageEffect_Release](#oh_imageeffect_release)进行资源释放。 | | [OH_EffectFilter](#oh_effectfilter) \* [OH_ImageEffect_AddFilter](#oh_imageeffect_addfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, const char \*filterName) | 添加滤镜。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_AddFilterByFilter](#oh_imageeffect_addfilterbyfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, [OH_EffectFilter](#oh_effectfilter) \*filter) | 添加指定滤镜。 | | [OH_EffectFilter](#oh_effectfilter) \* [OH_ImageEffect_InsertFilter](#oh_imageeffect_insertfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index, const char \*filterName) | 插入滤镜。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_InsertFilterByFilter](#oh_imageeffect_insertfilterbyfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index, [OH_EffectFilter](#oh_effectfilter) \*filter) | 按指定位置插入滤镜。 | | int32_t [OH_ImageEffect_RemoveFilter](#oh_imageeffect_removefilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, const char \*filterName) | 移除滤镜。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_RemoveFilterByIndex](#oh_imageeffect_removefilterbyindex) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index) | 移除指定位置滤镜。 | | [OH_EffectFilter](#oh_effectfilter) \* [OH_ImageEffect_ReplaceFilter](#oh_imageeffect_replacefilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index, const char \*filterName) | 替换滤镜。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_ReplaceFilterByFilter](#oh_imageeffect_replacefilterbyfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index, const char \*filterName) | 替换指定位置滤镜。 | | int32_t [OH_ImageEffect_GetFilterCount](#oh_imageeffect_getfiltercount) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect) | 查询已添加滤镜个数。 | | [OH_EffectFilter](#oh_effectfilter) \* [OH_ImageEffect_GetFilter](#oh_imageeffect_getfilter) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, uint32_t index) | 查询已添加滤镜。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_Configure](#oh_imageeffect_configure) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, const char \*key, const [ImageEffect_Any](_image_effect___any.md) \*value) | 设置配置信息。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetOutputSurface](#oh_imageeffect_setoutputsurface) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OHNativeWindow \*nativeWindow) | 设置输出Surface。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_GetInputSurface](#oh_imageeffect_getinputsurface) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OHNativeWindow \*\*nativeWindow) | 获取输入Surface。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetInputPixelmap](#oh_imageeffect_setinputpixelmap) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_PixelmapNative \*pixelmap) | 设置输入的Pixelmap。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetOutputPixelmap](#oh_imageeffect_setoutputpixelmap) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_PixelmapNative \*pixelmap) | 设置输出的Pixelmap。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetInputNativeBuffer](#oh_imageeffect_setinputnativebuffer) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_NativeBuffer \*nativeBuffer) | 设置输入的NativeBuffer。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetOutputNativeBuffer](#oh_imageeffect_setoutputnativebuffer) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_NativeBuffer \*nativeBuffer) | 设置输出的NativeBuffer。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetInputUri](#oh_imageeffect_setinputuri) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, const char \*uri) | 设置输入的URI。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetOutputUri](#oh_imageeffect_setoutputuri) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, const char \*uri) | 设置输出的URI。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetInputPicture](#oh_imageeffect_setinputpicture) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_PictureNative \*picture) | 设置输入的Picture。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_SetOutputPicture](#oh_imageeffect_setoutputpicture) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, OH_PictureNative \*picture) | 设置输出的Picture。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_Start](#oh_imageeffect_start) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect) | 启动效果器。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_Stop](#oh_imageeffect_stop) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect) | 停止生效效果。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_Release](#oh_imageeffect_release) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect) | 释放OH_ImageEffect实例资源。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_ImageEffect_Save](#oh_imageeffect_save) ([OH_ImageEffect](#oh_imageeffect) \*imageEffect, char \*\*info) | 序列化效果器。 | | [OH_ImageEffect](#oh_imageeffect) \* [OH_ImageEffect_Restore](#oh_imageeffect_restore) (const char \*info) | 反序列化效果器。 | | [OH_EffectFilterInfo](#oh_effectfilterinfo) \* [OH_EffectFilterInfo_Create](#oh_effectfilterinfo_create) () | 创建OH_EffectFilterInfo实例,调用[OH_EffectFilterInfo_Release](#oh_effectfilterinfo_release)进行资源释放。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_SetFilterName](#oh_effectfilterinfo_setfiltername) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, const char \*name) | 设置滤镜名。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_GetFilterName](#oh_effectfilterinfo_getfiltername) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, char \*\*name) | 获取滤镜名。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_SetSupportedBufferTypes](#oh_effectfilterinfo_setsupportedbuffertypes) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, uint32_t size, [ImageEffect_BufferType](#imageeffect_buffertype) \*bufferTypeArray) | 设置滤镜所支持的内存类型。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_GetSupportedBufferTypes](#oh_effectfilterinfo_getsupportedbuffertypes) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, uint32_t \*size, [ImageEffect_BufferType](#imageeffect_buffertype) \*\*bufferTypeArray) | 获取滤镜所支持的内存类型。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_SetSupportedFormats](#oh_effectfilterinfo_setsupportedformats) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, uint32_t size, [ImageEffect_Format](#imageeffect_format) \*formatArray) | 设置滤镜所支持的像素格式。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_GetSupportedFormats](#oh_effectfilterinfo_getsupportedformats) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, uint32_t \*size, [ImageEffect_Format](#imageeffect_format) \*\*formatArray) | 获取滤镜所支持的像素格式。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilterInfo_Release](#oh_effectfilterinfo_release) ([OH_EffectFilterInfo](#oh_effectfilterinfo) \*info) | 销毁OH_EffectFilterInfo实例。 | | [OH_EffectBufferInfo](#oh_effectbufferinfo) \* [OH_EffectBufferInfo_Create](#oh_effectbufferinfo_create) () | 创建OH_EffectBufferInfo实例,调用[OH_EffectBufferInfo_Release](#oh_effectbufferinfo_release)进行资源释放。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_SetAddr](#oh_effectbufferinfo_setaddr) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, void \*addr) | 设置图像内存地址。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_GetAddr](#oh_effectbufferinfo_getaddr) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, void \*\*addr) | 获取图像内存地址。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_SetWidth](#oh_effectbufferinfo_setwidth) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t width) | 设置图像宽度。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_GetWidth](#oh_effectbufferinfo_getwidth) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t \*width) | 获取图像宽度。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_SetHeight](#oh_effectbufferinfo_setheight) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t height) | 设置图像高度。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_GetHeight](#oh_effectbufferinfo_getheight) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t \*height) | 获取图像高度。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_SetRowSize](#oh_effectbufferinfo_setrowsize) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t rowSize) | 设置图像每一行的字节数。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_GetRowSize](#oh_effectbufferinfo_getrowsize) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, int32_t \*rowSize) | 获取图像每一行的字节数。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_SetEffectFormat](#oh_effectbufferinfo_seteffectformat) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, [ImageEffect_Format](#imageeffect_format) format) | 设置图像的像素格式。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_GetEffectFormat](#oh_effectbufferinfo_geteffectformat) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info, [ImageEffect_Format](#imageeffect_format) \*format) | 获取图像的像素格式。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectBufferInfo_Release](#oh_effectbufferinfo_release) ([OH_EffectBufferInfo](#oh_effectbufferinfo) \*info) | 销毁OH_EffectBufferInfo实例。 | | [OH_EffectFilter](#oh_effectfilter) \* [OH_EffectFilter_Create](#oh_effectfilter_create) (const char \*name) | 创建OH_EffectFilter实例,调用[OH_EffectFilter_Release](#oh_effectfilter_release)进行资源释放。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_SetValue](#oh_effectfilter_setvalue) ([OH_EffectFilter](#oh_effectfilter) \*filter, const char \*key, const [ImageEffect_Any](_image_effect___any.md) \*value) | 设置滤镜参数。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_GetValue](#oh_effectfilter_getvalue) ([OH_EffectFilter](#oh_effectfilter) \*filter, const char \*key, [ImageEffect_Any](_image_effect___any.md) \*value) | 获取滤镜参数。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_Register](#oh_effectfilter_register) (const [OH_EffectFilterInfo](#oh_effectfilterinfo) \*info, const [ImageEffect_FilterDelegate](_image_effect___filter_delegate.md) \*delegate) | 注册自定义滤镜。 | | [ImageEffect_FilterNames](_image_effect___filter_names.md) \* [OH_EffectFilter_LookupFilters](#oh_effectfilter_lookupfilters) (const char \*key) | 查询满足条件的滤镜。 | | void [OH_EffectFilter_ReleaseFilterNames](#oh_effectfilter_releasefilternames) () | 释放滤镜名内存资源。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_LookupFilterInfo](#oh_effectfilter_lookupfilterinfo) (const char \*name, [OH_EffectFilterInfo](#oh_effectfilterinfo) \*info) | 查询滤镜信息。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_Render](#oh_effectfilter_render) ([OH_EffectFilter](#oh_effectfilter) \*filter, OH_PixelmapNative \*inputPixelmap, OH_PixelmapNative \*outputPixelmap) | 执行图像渲染。 | | [ImageEffect_ErrorCode](#imageeffect_errorcode) [OH_EffectFilter_Release](#oh_effectfilter_release) ([OH_EffectFilter](#oh_effectfilter) \*filter) | 销毁OH_EffectFilter实例。 | ## 宏定义说明 ### OH_EFFECT_BRIGHTNESS_FILTER ``` #define OH_EFFECT_BRIGHTNESS_FILTER "Brightness" ``` **描述** 亮度滤镜,对应的参数为OH_EFFECT_FILTER_INTENSITY_KEY,参数类型为EFFECT_DATA_TYPE_FLOAT。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EFFECT_CONTRAST_FILTER ``` #define OH_EFFECT_CONTRAST_FILTER "Contrast" ``` **描述** 对比度滤镜,对应的参数为OH_EFFECT_FILTER_INTENSITY_KEY,参数类型为EFFECT_DATA_TYPE_FLOAT。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EFFECT_CROP_FILTER ``` #define OH_EFFECT_CROP_FILTER "Crop" ``` **描述** 裁剪滤镜,对应的参数为OH_EFFECT_FILTER_REGION_KEY,参数类型为EFFECT_DATA_TYPE_PTR, 参数值为结构体 [ImageEffect_Region](_image_effect___region.md)。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EFFECT_FILTER_INTENSITY_KEY ``` #define OH_EFFECT_FILTER_INTENSITY_KEY "FilterIntensity" ``` **描述** 强度参数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EFFECT_FILTER_REGION_KEY ``` #define OH_EFFECT_FILTER_REGION_KEY "FilterRegion" ``` **描述** 图像区域参数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ## 类型定义说明 ### ImageEffect_Any ``` typedef struct ImageEffect_Any ImageEffect_Any ``` **描述** 参数结构体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_BufferType ``` typedef enum ImageEffect_BufferType ImageEffect_BufferType ``` **描述** 内存类型枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_DataType ``` typedef enum ImageEffect_DataType ImageEffect_DataType ``` **描述** 数据类型枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_DataValue ``` typedef union ImageEffect_DataValue ImageEffect_DataValue ``` **描述** 数据值联合体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_ErrorCode ``` typedef enum ImageEffect_ErrorCode ImageEffect_ErrorCode ``` **描述** 效果器错误码。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_FilterDelegate ``` typedef struct ImageEffect_FilterDelegate ImageEffect_FilterDelegate ``` **描述** 自定义滤镜回调函数结构体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_FilterNames ``` typedef struct ImageEffect_FilterNames ImageEffect_FilterNames ``` **描述** 滤镜名信息。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_Format ``` typedef enum ImageEffect_Format ImageEffect_Format ``` **描述** 像素格式枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_Region ``` typedef struct ImageEffect_Region ImageEffect_Region ``` **描述** 图像区域结构体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### ImageEffect_Size ``` typedef struct ImageEffect_Size ImageEffect_Size ``` **描述** 图像尺寸结构体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EffectBufferInfo ``` typedef struct OH_EffectBufferInfo OH_EffectBufferInfo ``` **描述** 定义图像信息。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EffectFilter ``` typedef struct OH_EffectFilter OH_EffectFilter ``` **描述** 定义滤镜结构类型。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EffectFilterDelegate_PushData ``` typedef void(* OH_EffectFilterDelegate_PushData) (OH_EffectFilter *filter, OH_EffectBufferInfo *info) ``` **描述** 自定义滤镜传递图像信息到下一级滤镜的函数指针。需要在[OH_EffectFilterDelegate_Render](#oh_effectfilterdelegate_render) 的回调中主动调用该函数指针。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | info | 图像信息[OH_EffectBufferInfo](#oh_effectbufferinfo)指针。 | ### OH_EffectFilterDelegate_Render ``` typedef bool(* OH_EffectFilterDelegate_Render) (OH_EffectFilter *filter, OH_EffectBufferInfo *info, OH_EffectFilterDelegate_PushData pushData) ``` **描述** 自定义滤镜渲染图像的回调函数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | info | 图像信息[OH_EffectBufferInfo](#oh_effectbufferinfo)指针。 | | pushData | 自定义滤镜传递图像信息到下一级滤镜的函数指针[OH_EffectFilterDelegate_PushData](#oh_effectfilterdelegate_pushdata)。 | **返回:** 执行成功时返回true,否则返回false。 ### OH_EffectFilterDelegate_Restore ``` typedef OH_EffectFilter*(* OH_EffectFilterDelegate_Restore) (const char *info) ``` **描述** 自定义滤镜反序列化的回调函数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 序列化JSON字符串。 | **返回:** 执行成功时返回OH_EffectFilter实例,否则返回空指针。 ### OH_EffectFilterDelegate_Save ``` typedef bool(* OH_EffectFilterDelegate_Save) (OH_EffectFilter *filter, char **info) ``` **描述** 自定义滤镜序列化的回调函数,按照JSON格式进行滤镜序列化处理。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | info | 指向char数组的指针,返回序列化JSON字符串。 | **返回:** 执行成功时返回true,否则返回false。 ### OH_EffectFilterDelegate_SetValue ``` typedef bool(* OH_EffectFilterDelegate_SetValue) (OH_EffectFilter *filter, const char *key, const ImageEffect_Any *value) ``` **描述** 自定义滤镜设置参数的回调函数,用于开发者校验参数及参数值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | key | 滤镜参数。 | | value | 滤镜参数值。 | **返回:** 参数有效时返回true,否则返回false。 ### OH_EffectFilterInfo ``` typedef struct OH_EffectFilterInfo OH_EffectFilterInfo ``` **描述** 定义滤镜信息结构体。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_ImageEffect ``` typedef struct OH_ImageEffect OH_ImageEffect ``` **描述** 定义效果器结构类型。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ## 枚举类型说明 ### ImageEffect_BufferType ``` enum ImageEffect_BufferType ``` **描述** 内存类型枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | EFFECT_BUFFER_TYPE_UNKNOWN | 未定义类型。 | | EFFECT_BUFFER_TYPE_PIXEL | 像素图类型。 | | EFFECT_BUFFER_TYPE_TEXTURE | 纹理类型。 | ### ImageEffect_DataType ``` enum ImageEffect_DataType ``` **描述** 数据类型枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | EFFECT_DATA_TYPE_UNKNOWN | 未定义类型。 | | EFFECT_DATA_TYPE_INT32 | 整形。 | | EFFECT_DATA_TYPE_FLOAT | 单精度浮点型。 | | EFFECT_DATA_TYPE_DOUBLE | 双精度浮点型。 | | EFFECT_DATA_TYPE_CHAR | 字节类型。 | | EFFECT_DATA_TYPE_LONG | 长整型。 | | EFFECT_DATA_TYPE_BOOL | 布尔类型。 | | EFFECT_DATA_TYPE_PTR | 指针类型。 | ### ImageEffect_ErrorCode ``` enum ImageEffect_ErrorCode ``` **描述** 效果器错误码。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | EFFECT_SUCCESS | 操作成功。 | | EFFECT_ERROR_PERMISSION_DENIED | 权限校验失败。 | | EFFECT_ERROR_PARAM_INVALID | 参数检查失败。 | | EFFECT_BUFFER_SIZE_NOT_MATCH | 输出buffer尺寸不匹配。 | | EFFECT_COLOR_SPACE_NOT_MATCH | 输入输出色彩空间不匹配。 | | EFFECT_INPUT_OUTPUT_NOT_MATCH | 输入输出配置不一致。比如:输入Surface,输出Pixelmap。 | | EFFECT_EFFECT_NUMBER_LIMITED | 超出管线最大规格。 | | EFFECT_INPUT_OUTPUT_NOT_SUPPORTED | 输入、输出配置不支持。 | | EFFECT_ALLOCATE_MEMORY_FAILED | 申请内存失败。 | | EFFECT_PARAM_ERROR | 参数值错误。 例如:滤镜无效的参数值。 | | EFFECT_KEY_ERROR | 参数错误。例如:滤镜无效的参数。 | | EFFECT_UNKNOWN | 未定义错误。 | ### ImageEffect_Format ``` enum ImageEffect_Format ``` **描述** 像素格式枚举值。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 | 枚举值 | 描述 | | -------- | -------- | | EFFECT_PIXEL_FORMAT_UNKNOWN | 未定义类型。 | | EFFECT_PIXEL_FORMAT_RGBA8888 | RGBA8888类型。 | | EFFECT_PIXEL_FORMAT_NV21 | NV21类型。 | | EFFECT_PIXEL_FORMAT_NV12 | NV12类型。 | | EFFECT_PIXEL_FORMAT_RGBA1010102 | 10bit RGBA类型。 | | EFFECT_PIXEL_FORMAT_YCBCR_P010 | 10bit YCBCR420类型。 | | EFFECT_PIXEL_FORMAT_YCRCB_P010 | 10bit YCRCB420类型。 | ## 函数说明 ### OH_EffectBufferInfo_Create() ``` OH_EffectBufferInfo* OH_EffectBufferInfo_Create () ``` **描述** 创建OH_EffectBufferInfo实例,调用[OH_EffectBufferInfo_Release](#oh_effectbufferinfo_release)进行资源释放。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **返回:** 返回一个指向OH_EffectBufferInfo实例的指针,创建失败时返回空指针。 ### OH_EffectBufferInfo_GetAddr() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_GetAddr (OH_EffectBufferInfo * info, void ** addr ) ``` **描述** 获取图像内存地址。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | addr | 图像虚拟内存地址。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_GetEffectFormat() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_GetEffectFormat (OH_EffectBufferInfo * info, ImageEffect_Format * format ) ``` **描述** 获取图像的像素格式。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | format | 图像像素格式[ImageEffect_Format](#imageeffect_format)。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_GetHeight() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_GetHeight (OH_EffectBufferInfo * info, int32_t * height ) ``` **描述** 获取图像高度。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | height | 图像高度,单位:像素。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_GetRowSize() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_GetRowSize (OH_EffectBufferInfo * info, int32_t * rowSize ) ``` **描述** 获取图像每一行的字节数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | rowSize | 图像每一行的字节数,单位:字节。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_GetWidth() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_GetWidth (OH_EffectBufferInfo * info, int32_t * width ) ``` **描述** 获取图像宽度。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | width | 图像宽度,单位:像素。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_Release() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_Release (OH_EffectBufferInfo * info) ``` **描述** 销毁OH_EffectBufferInfo实例。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_SetAddr() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_SetAddr (OH_EffectBufferInfo * info, void * addr ) ``` **描述** 设置图像内存地址。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | addr | 图像虚拟内存地址。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_SetEffectFormat() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_SetEffectFormat (OH_EffectBufferInfo * info, ImageEffect_Format format ) ``` **描述** 设置图像的像素格式。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | format | 图像像素格式[ImageEffect_Format](#imageeffect_format)。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_SetHeight() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_SetHeight (OH_EffectBufferInfo * info, int32_t height ) ``` **描述** 设置图像高度。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | height | 图像高度,单位:像素。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_SetRowSize() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_SetRowSize (OH_EffectBufferInfo * info, int32_t rowSize ) ``` **描述** 设置图像每一行的字节数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | rowSize | 图像每一行的字节数,单位:字节。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectBufferInfo_SetWidth() ``` ImageEffect_ErrorCode OH_EffectBufferInfo_SetWidth (OH_EffectBufferInfo * info, int32_t width ) ``` **描述** 设置图像宽度。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 图像信息指针。 | | width | 图像宽度,单位:像素。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilter_Create() ``` OH_EffectFilter* OH_EffectFilter_Create (const char * name) ``` **描述** 创建OH_EffectFilter实例,调用[OH_EffectFilter_Release](#oh_effectfilter_release)进行资源释放。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 滤镜名,例如:OH_EFFECT_BRIGHTNESS_FILTER。 | **返回:** 返回一个指向OH_EffectFilter实例的指针,创建失败时返回空指针。 ### OH_EffectFilter_GetValue() ``` ImageEffect_ErrorCode OH_EffectFilter_GetValue (OH_EffectFilter * filter, const char * key, ImageEffect_Any * value ) ``` **描述** 获取滤镜参数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | key | 滤镜参数,例如:OH_EFFECT_FILTER_INTENSITY_KEY。 | | value | 滤镜参数值。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 EFFECT_KEY_ERROR如果参数无效。 ### OH_EffectFilter_LookupFilterInfo() ``` ImageEffect_ErrorCode OH_EffectFilter_LookupFilterInfo (const char * name, OH_EffectFilterInfo * info ) ``` **描述** 查询滤镜信息。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 滤镜名。 | | info | 滤镜信息指针[OH_EffectFilterInfo](#oh_effectfilterinfo)。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针或其他无效值。 ### OH_EffectFilter_LookupFilters() ``` ImageEffect_FilterNames* OH_EffectFilter_LookupFilters (const char * key) ``` **描述** 查询满足条件的滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | key | 查询条件,可根据“Default”关键词查询所有的滤镜。 | **返回:** 滤镜名列表[ImageEffect_FilterNames](_image_effect___filter_names.md)。 ### OH_EffectFilter_Register() ``` ImageEffect_ErrorCode OH_EffectFilter_Register (const OH_EffectFilterInfo * info, const ImageEffect_FilterDelegate * delegate ) ``` **描述** 注册自定义滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针[OH_EffectFilterInfo](#oh_effectfilterinfo)。 | | delegate | 自定义滤镜回调函数[ImageEffect_FilterDelegate](_image_effect___filter_delegate.md)。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilter_Release() ``` ImageEffect_ErrorCode OH_EffectFilter_Release (OH_EffectFilter * filter) ``` **描述** 销毁OH_EffectFilter实例。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilter_ReleaseFilterNames() ``` void OH_EffectFilter_ReleaseFilterNames () ``` **描述** 释放滤镜名内存资源。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 ### OH_EffectFilter_Render() ``` ImageEffect_ErrorCode OH_EffectFilter_Render (OH_EffectFilter * filter, OH_PixelmapNative * inputPixelmap, OH_PixelmapNative * outputPixelmap ) ``` **描述** 执行图像渲染。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | inputPixelmap | 输入图像。 | | outputPixelmap | 输出图像。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilter_SetValue() ``` ImageEffect_ErrorCode OH_EffectFilter_SetValue (OH_EffectFilter * filter, const char * key, const ImageEffect_Any * value ) ``` **描述** 设置滤镜参数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | filter | 滤镜指针。 | | key | 滤镜参数,例如:OH_EFFECT_FILTER_INTENSITY_KEY。 | | value | 滤镜参数值。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 EFFECT_KEY_ERROR如果参数无效。 EFFECT_PARAM_ERROR如果参数值无效。 ### OH_EffectFilterInfo_Create() ``` OH_EffectFilterInfo* OH_EffectFilterInfo_Create () ``` **描述** 创建OH_EffectFilterInfo实例,调用[OH_EffectFilterInfo_Release](#oh_effectfilterinfo_release)进行资源释放。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **返回:** 返回一个指向OH_EffectFilterInfo实例的指针,创建失败时返回空指针。 ### OH_EffectFilterInfo_GetFilterName() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_GetFilterName (OH_EffectFilterInfo * info, char ** name ) ``` **描述** 获取滤镜名。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | name | 指向char数组的指针,返回滤镜名。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_GetSupportedBufferTypes() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_GetSupportedBufferTypes (OH_EffectFilterInfo * info, uint32_t * size, ImageEffect_BufferType ** bufferTypeArray ) ``` **描述** 获取滤镜所支持的内存类型。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | size | 滤镜所支持内存类型[ImageEffect_BufferType](#imageeffect_buffertype)个数。 | | bufferTypeArray | 滤镜所支持内存类型[ImageEffect_BufferType](#imageeffect_buffertype)数组。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_GetSupportedFormats() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_GetSupportedFormats (OH_EffectFilterInfo * info, uint32_t * size, ImageEffect_Format ** formatArray ) ``` **描述** 获取滤镜所支持的像素格式。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | size | 滤镜所支持像素格式[ImageEffect_Format](#imageeffect_format)个数。 | | formatArray | 滤镜所支持像素格式[ImageEffect_Format](#imageeffect_format)数组。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_Release() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_Release (OH_EffectFilterInfo * info) ``` **描述** 销毁OH_EffectFilterInfo实例。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_SetFilterName() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_SetFilterName (OH_EffectFilterInfo * info, const char * name ) ``` **描述** 设置滤镜名。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | name | 滤镜名,例如:OH_EFFECT_BRIGHTNESS_FILTER。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_SetSupportedBufferTypes() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_SetSupportedBufferTypes (OH_EffectFilterInfo * info, uint32_t size, ImageEffect_BufferType * bufferTypeArray ) ``` **描述** 设置滤镜所支持的内存类型。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | size | 滤镜所支持内存类型[ImageEffect_BufferType](#imageeffect_buffertype)个数。 | | bufferTypeArray | 滤镜所支持内存类型[ImageEffect_BufferType](#imageeffect_buffertype)数组。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_EffectFilterInfo_SetSupportedFormats() ``` ImageEffect_ErrorCode OH_EffectFilterInfo_SetSupportedFormats (OH_EffectFilterInfo * info, uint32_t size, ImageEffect_Format * formatArray ) ``` **描述** 设置滤镜所支持的像素格式。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 滤镜信息指针。 | | size | 滤镜所支持像素格式[ImageEffect_Format](#imageeffect_format)个数。 | | formatArray | 滤镜所支持像素格式[ImageEffect_Format](#imageeffect_format)数组。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_AddFilter() ``` OH_EffectFilter* OH_ImageEffect_AddFilter (OH_ImageEffect * imageEffect, const char * filterName ) ``` **描述** 添加滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | filterName | 滤镜名。 | **返回:** 返回一个指向OH_EffectFilter实例的指针,滤镜名无效时返回空指针。 ### OH_ImageEffect_AddFilterByFilter() ``` ImageEffect_ErrorCode OH_ImageEffect_AddFilterByFilter(OH_ImageEffect *imageEffect, OH_EffectFilter *filter) ``` **描述** 添加指定滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | filter | 滤镜指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_Configure() ``` ImageEffect_ErrorCode OH_ImageEffect_Configure (OH_ImageEffect * imageEffect, const char * key, const ImageEffect_Any * value ) ``` **描述** 设置配置信息。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | key | 配置参数。 | | value | 配置参数值。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 EFFECT_KEY_ERROR如果参数无效。 EFFECT_PARAM_ERROR如果参数值无效。 ### OH_ImageEffect_Create() ``` OH_ImageEffect* OH_ImageEffect_Create (const char * name) ``` **描述** 创建OH_ImageEffect实例,调用[OH_ImageEffect_Release](#oh_imageeffect_release)进行资源释放。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | name | 效果器名,用于标识效果器,由用户自定义,建议为非空的字符串。 | **返回:** 返回一个指向OH_ImageEffect实例的指针,创建失败时返回空指针。 ### OH_ImageEffect_GetFilter() ``` OH_EffectFilter* OH_ImageEffect_GetFilter (OH_ImageEffect * imageEffect, uint32_t index ) ``` **描述** 查询已添加滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | index | 待查询滤镜位置索引。 | **返回:** 返回一个指向OH_EffectFilter实例的指针,参数无效时返回空指针。 ### OH_ImageEffect_GetFilterCount() ``` int32_t OH_ImageEffect_GetFilterCount (OH_ImageEffect * imageEffect) ``` **描述** 查询已添加滤镜个数。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | **返回:** 已添加的滤镜个数。 ### OH_ImageEffect_GetInputSurface() ``` ImageEffect_ErrorCode OH_ImageEffect_GetInputSurface (OH_ImageEffect * imageEffect, OHNativeWindow ** nativeWindow ) ``` **描述** 获取输入Surface。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | nativeWindow | 指向OHNativeWindow实例的指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_InsertFilter() ``` OH_EffectFilter* OH_ImageEffect_InsertFilter (OH_ImageEffect * imageEffect, uint32_t index, const char * filterName ) ``` **描述** 插入滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | index | 插入滤镜位置索引。 | | filterName | 滤镜名。 | **返回:** 返回一个指向OH_EffectFilter实例的指针,参数无效时返回空指针。 ### OH_ImageEffect_InsertFilterByFilter() ``` ImageEffect_ErrorCode OH_ImageEffect_InsertFilterByFilter(OH_ImageEffect *imageEffect, uint32_t index, OH_EffectFilter *filter); ``` **描述** 按指定位置插入滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | index | 插入滤镜位置索引。 | | filter | 滤镜指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_Release() ``` ImageEffect_ErrorCode OH_ImageEffect_Release (OH_ImageEffect * imageEffect) ``` **描述** 释放OH_ImageEffect实例资源。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_RemoveFilter() ``` int32_t OH_ImageEffect_RemoveFilter (OH_ImageEffect * imageEffect, const char * filterName ) ``` **描述** 移除滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | filterName | 滤镜名。 | **返回:** 所删除的滤镜个数。 ### OH_ImageEffect_RemoveFilterByIndex() ``` ImageEffect_ErrorCode OH_ImageEffect_RemoveFilterByIndex(OH_ImageEffect *imageEffect, uint32_t index) ``` **描述** 移除指定位置滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | index | 移除滤镜位置索引。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_ReplaceFilter() ``` OH_EffectFilter *OH_ImageEffect_ReplaceFilter(OH_ImageEffect *imageEffect, uint32_t index, const char *filterName) ``` **描述** 替换滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | filterName | 滤镜名。 | **返回:** 返回一个指向OH_EffectFilter实例的指针,替换失败时返回空指针。 ### OH_ImageEffect_ReplaceFilterByFilter() ``` ImageEffect_ErrorCode OH_ImageEffect_ReplaceFilterByFilter(OH_ImageEffect *imageEffect, uint32_t index, const char *filterName); ``` **描述** 替换指定位置滤镜。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | index | 替换滤镜位置索引。 | | filterName | 滤镜名。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_Restore() ``` OH_ImageEffect* OH_ImageEffect_Restore (const char * info) ``` **描述** 反序列化效果器。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | info | 序列化JSON字符串。 | **返回:** 反序列化成功时返回OH_ImageEffect实例,否则返回空指针。 ### OH_ImageEffect_Save() ``` ImageEffect_ErrorCode OH_ImageEffect_Save (OH_ImageEffect * imageEffect, char ** info ) ``` **描述** 序列化效果器。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | info | 指向char数组的指针,返回序列化JSON字符串。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetInputNativeBuffer() ``` ImageEffect_ErrorCode OH_ImageEffect_SetInputNativeBuffer (OH_ImageEffect * imageEffect, OH_NativeBuffer * nativeBuffer ) ``` **描述** 设置输入的NativeBuffer。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | nativeBuffer | 指向OH_NativeBuffer实例的指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetInputPicture() ``` ImageEffect_ErrorCode OH_ImageEffect_SetInputPicture(OH_ImageEffect *imageEffect, OH_PictureNative *picture) ``` **描述** 设置输入的Picture。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | picture | 指向OH_PictureNative实例的指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetInputPixelmap() ``` ImageEffect_ErrorCode OH_ImageEffect_SetInputPixelmap (OH_ImageEffect * imageEffect, OH_PixelmapNative * pixelmap ) ``` **描述** 设置输入的Pixelmap。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | pixelmap | 指向OH_PixelmapNative实例的指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetInputUri() ``` ImageEffect_ErrorCode OH_ImageEffect_SetInputUri (OH_ImageEffect * imageEffect, const char * uri ) ``` **描述** 设置输入的URI。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | uri | 图片URI。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetOutputNativeBuffer() ``` ImageEffect_ErrorCode OH_ImageEffect_SetOutputNativeBuffer (OH_ImageEffect * imageEffect, OH_NativeBuffer * nativeBuffer ) ``` **描述** 设置输出的NativeBuffer。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | nativeBuffer | 指向OH_NativeBuffer实例的指针,允许为空,当输入为空时渲染结果返回到输入的OH_NativeBuffer对象上。 | **返回:** EFFECT_SUCCESS,如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID,如果效果器入参为空指针。 EFFECT_PARAM_ERROR,如果参数异常导致方法调用失败。 ### OH_ImageEffect_SetOutputPicture() ``` ImageEffect_ErrorCode OH_ImageEffect_SetOutputPicture(OH_ImageEffect *imageEffect, OH_PictureNative *picture) ``` **描述** 设置输出的Picture。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 13 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | picture | 指向OH_PictureNative实例的指针,允许为空,当输入为空时渲染结果返回到输入的OH_PictureNative对象上。 | **返回:** EFFECT_SUCCESS,如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID,如果效果器入参为空指针。 EFFECT_PARAM_ERROR,如果参数异常导致方法调用失败。 ### OH_ImageEffect_SetOutputPixelmap() ``` ImageEffect_ErrorCode OH_ImageEffect_SetOutputPixelmap (OH_ImageEffect * imageEffect, OH_PixelmapNative * pixelmap ) ``` **描述** 设置输出的Pixelmap。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | pixelmap | 指向OH_PixelmapNative实例的指针,允许为空,当输入为空时渲染结果返回到输入的OH_PixelmapNative对象上。 | **返回:** EFFECT_SUCCESS,如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID,如果效果器入参为空指针。 EFFECT_PARAM_ERROR,如果参数异常导致方法调用失败。 ### OH_ImageEffect_SetOutputSurface() ``` ImageEffect_ErrorCode OH_ImageEffect_SetOutputSurface (OH_ImageEffect * imageEffect, OHNativeWindow * nativeWindow ) ``` **描述** 设置输出Surface。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | nativeWindow | 指向OHNativeWindow实例的指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_SetOutputUri() ``` ImageEffect_ErrorCode OH_ImageEffect_SetOutputUri (OH_ImageEffect * imageEffect, const char * uri ) ``` **描述** 设置输出的URI。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | | uri | 图片URI。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 ### OH_ImageEffect_Start() ``` ImageEffect_ErrorCode OH_ImageEffect_Start (OH_ImageEffect * imageEffect) ``` **描述** 启动效果器。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。 EFFECT_INPUT_OUTPUT_NOT_SUPPORTED如果待处理输入、输出图像数据类型不一致。 EFFECT_COLOR_SPACE_NOT_MATCH如果输入、输出图像色彩空间不配置。 EFFECT_ALLOCATE_MEMORY_FAILED如果内存申请失败。 ### OH_ImageEffect_Stop() ``` ImageEffect_ErrorCode OH_ImageEffect_Stop (OH_ImageEffect * imageEffect) ``` **描述** 停止生效效果。 **系统能力:** SystemCapability.Multimedia.ImageEffect.Core **起始版本:** 12 **参数:** | 名称 | 描述 | | -------- | -------- | | imageEffect | 效果器指针。 | **返回:** EFFECT_SUCCESS如果方法调用成功。 EFFECT_ERROR_PARAM_INVALID如果入参为空指针。