1# image_source_native.h 2<!--Kit: Image Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @aulight02--> 5<!--Designer: @liyang_bryan--> 6<!--Tester: @xchaosioda--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11图片解码API。 12 13**引用文件:** <multimedia/image_framework/image/image_source_native.h> 14 15**库:** libimage_source.so 16 17**系统能力:** SystemCapability.Multimedia.Image.ImageSource 18 19**起始版本:** 12 20 21**相关模块:** [Image_NativeModule](capi-image-nativemodule.md) 22 23## 汇总 24 25### 结构体 26 27| 名称 | typedef关键字 | 描述 | 28| -- | -- | -- | 29| [OH_ImageSourceNative](capi-image-nativemodule-oh-imagesourcenative.md) | OH_ImageSourceNative | OH_ImageSourceNative是native层封装的ImageSource结构体,用于创建图片数据。 | 30| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) | OH_ImageSource_Info | OH_ImageSource_Info是native层封装的ImageSource信息结构体,OH_ImageSource_Info结构体不可直接操作,而是采用函数调用方式创建、释放结构体以及操作具体字段。 | 31| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) | OH_DecodingOptionsForPicture | Picture解码参数结构体。通过[OH_DecodingOptionsForPicture_Create](#oh_decodingoptionsforpicture_create)获取。 | 32| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) | OH_DecodingOptions | OH_DecodingOptions是native层封装的解码选项参数结构体,用于设置解码选项参数,在创建Pixelmap时作为入参传入,详细信息见[OH_ImageSourceNative_CreatePixelmap](#oh_imagesourcenative_createpixelmap)。 | 33 34### 枚举 35 36| 名称 | typedef关键字 | 描述 | 37| -- | -- | -- | 38| [IMAGE_DYNAMIC_RANGE](#image_dynamic_range) | IMAGE_DYNAMIC_RANGE | 解码指定期望动态范围。 | 39| [IMAGE_ALLOCATOR_TYPE](#image_allocator_type) | IMAGE_ALLOCATOR_TYPE | 用于分配PixelMap内存的分配器类型。 | 40| [Image_CropAndScaleStrategy](#image_cropandscalestrategy) | Image_CropAndScaleStrategy | 在同时指定desiredSize和desiredRegion时执行裁剪和缩放的策略。 | 41 42### 函数 43 44| 名称 | 描述 | 45| -- | -- | 46| [Image_ErrorCode OH_ImageSourceInfo_Create(OH_ImageSource_Info **info)](#oh_imagesourceinfo_create) | 创建OH_ImageSource_Info指针。 | 47| [Image_ErrorCode OH_ImageSourceInfo_GetWidth(OH_ImageSource_Info *info, uint32_t *width)](#oh_imagesourceinfo_getwidth) | 获取图片的宽。 | 48| [Image_ErrorCode OH_ImageSourceInfo_GetHeight(OH_ImageSource_Info *info, uint32_t *height)](#oh_imagesourceinfo_getheight) | 获取图片的高。 | 49| [Image_ErrorCode OH_ImageSourceInfo_GetDynamicRange(OH_ImageSource_Info *info, bool *isHdr)](#oh_imagesourceinfo_getdynamicrange) | 获取图片是否为高动态范围的信息。 | 50| [Image_ErrorCode OH_ImageSourceInfo_GetMimetype(OH_ImageSource_Info *info, Image_MimeType *mimetype)](#oh_imagesourceinfo_getmimetype) | 获取图片源的MIME类型。 | 51| [Image_ErrorCode OH_ImageSourceInfo_Release(OH_ImageSource_Info *info)](#oh_imagesourceinfo_release) | 释放OH_ImageSource_Info指针。 | 52| [Image_ErrorCode OH_DecodingOptions_Create(OH_DecodingOptions **options)](#oh_decodingoptions_create) | 创建OH_DecodingOptions指针。 | 53| [Image_ErrorCode OH_DecodingOptions_GetPixelFormat(OH_DecodingOptions *options, int32_t *pixelFormat)](#oh_decodingoptions_getpixelformat) | 获取pixel格式。 | 54| [Image_ErrorCode OH_DecodingOptions_SetPixelFormat(OH_DecodingOptions *options, int32_t pixelFormat)](#oh_decodingoptions_setpixelformat) | 设置pixel格式。 | 55| [Image_ErrorCode OH_DecodingOptions_GetIndex(OH_DecodingOptions *options, uint32_t *index)](#oh_decodingoptions_getindex) | 获取解码图片序号。 | 56| [Image_ErrorCode OH_DecodingOptions_SetIndex(OH_DecodingOptions *options, uint32_t index)](#oh_decodingoptions_setindex) | 设置解码图片序号。 | 57| [Image_ErrorCode OH_DecodingOptions_GetRotate(OH_DecodingOptions *options, float *rotate)](#oh_decodingoptions_getrotate) | 获取旋转角度。 | 58| [Image_ErrorCode OH_DecodingOptions_SetRotate(OH_DecodingOptions *options, float rotate)](#oh_decodingoptions_setrotate) | 设置旋转角度。 | 59| [Image_ErrorCode OH_DecodingOptions_GetDesiredSize(OH_DecodingOptions *options, Image_Size *desiredSize)](#oh_decodingoptions_getdesiredsize) | 获取期望输出大小。 | 60| [Image_ErrorCode OH_DecodingOptions_SetDesiredSize(OH_DecodingOptions *options, Image_Size *desiredSize)](#oh_decodingoptions_setdesiredsize) | 设置期望输出大小。 | 61| [Image_ErrorCode OH_DecodingOptions_GetDesiredRegion(OH_DecodingOptions *options, Image_Region *desiredRegion)](#oh_decodingoptions_getdesiredregion) | 获取解码区域。<br> 由于对应SetDesiredRegion接口无法满足区域解码诉求,从API 19开始,推荐配套使用[OH_DecodingOptions_GetCropRegion](#oh_decodingoptions_getcropregion)接口替代。 | 62| [Image_ErrorCode OH_DecodingOptions_SetDesiredRegion(OH_DecodingOptions *options, Image_Region *desiredRegion)](#oh_decodingoptions_setdesiredregion) | 设置解码区域。<br> 实际解码结果会按照原图解码,无区域解码效果。从API 19开始,推荐使用接口[OH_DecodingOptions_SetCropRegion](#oh_decodingoptions_setcropregion)替代。 | 63| [Image_ErrorCode OH_DecodingOptions_GetDesiredDynamicRange(OH_DecodingOptions *options, int32_t *desiredDynamicRange)](#oh_decodingoptions_getdesireddynamicrange) | 获取解码时设置的期望动态范围。 | 64| [Image_ErrorCode OH_DecodingOptions_SetDesiredDynamicRange(OH_DecodingOptions *options, int32_t desiredDynamicRange)](#oh_decodingoptions_setdesireddynamicrange) | 设置解码时的期望动态范围。 | 65| [Image_ErrorCode OH_DecodingOptions_GetDesiredColorSpace(OH_DecodingOptions *options, int32_t *colorSpace)](#oh_decodingoptions_getdesiredcolorspace) | 获取解码参数中设置的色彩空间。 | 66| [Image_ErrorCode OH_DecodingOptions_SetDesiredColorSpace(OH_DecodingOptions *options, int32_t colorSpace)](#oh_decodingoptions_setdesiredcolorspace) | 设置解码期望得到的色彩空间。 | 67| [Image_ErrorCode OH_DecodingOptions_SetCropAndScaleStrategy(OH_DecodingOptions *options, int32_t cropAndScaleStrategy)](#oh_decodingoptions_setcropandscalestrategy) | 设置解码选项的裁剪和缩放策略。 | 68| [Image_ErrorCode OH_DecodingOptions_GetCropAndScaleStrategy(OH_DecodingOptions *options, int32_t *cropAndScaleStrategy)](#oh_decodingoptions_getcropandscalestrategy) | 获取解码选项的裁剪和缩放策略。 | 69| [Image_ErrorCode OH_DecodingOptions_GetCropRegion(OH_DecodingOptions *options, Image_Region *cropRegion)](#oh_decodingoptions_getcropregion) | 获取解码参数中的裁剪区域。 | 70| [Image_ErrorCode OH_DecodingOptions_SetCropRegion(OH_DecodingOptions *options, Image_Region *cropRegion)](#oh_decodingoptions_setcropregion) | 设置解码参数中的裁剪区域。 | 71| [Image_ErrorCode OH_DecodingOptions_Release(OH_DecodingOptions *options)](#oh_decodingoptions_release) | 释放OH_DecodingOptions指针。 | 72| [Image_ErrorCode OH_ImageSourceNative_CreateFromUri(char *uri, size_t uriSize, OH_ImageSourceNative **res)](#oh_imagesourcenative_createfromuri) | 通过uri创建OH_ImageSourceNative指针。 | 73| [Image_ErrorCode OH_ImageSourceNative_CreateFromFd(int32_t fd, OH_ImageSourceNative **res)](#oh_imagesourcenative_createfromfd) | 通过fd创建OH_ImageSourceNative指针。 | 74| [Image_ErrorCode OH_ImageSourceNative_CreateFromData(uint8_t *data, size_t dataSize, OH_ImageSourceNative **res)](#oh_imagesourcenative_createfromdata) | 通过缓冲区数据创建OH_ImageSourceNative指针。<br> data数据应该是未解码的数据,不要传入类似于RBGA,YUV的像素buffer数据,如果想通过像素buffer数据创建pixelMap,可以调用[OH_PixelmapNative_CreatePixelmap](capi-pixelmap-native-h.md#oh_pixelmapnative_createpixelmap)这一类接口。 | 75| [Image_ErrorCode OH_ImageSourceNative_CreateFromDataWithUserBuffer(uint8_t *data, size_t datalength, OH_ImageSourceNative **imageSource)](#oh_imagesourcenative_createfromdatawithuserbuffer) | 由数据缓存创建图片源。传入的数据缓存将在图片源对象中直接访问,在图片源对象的声明周期内,数据缓存需要保持可用。 | 76| [Image_ErrorCode OH_ImageSourceNative_CreateFromRawFile(RawFileDescriptor *rawFile, OH_ImageSourceNative **res)](#oh_imagesourcenative_createfromrawfile) | 通过图像资源文件的RawFileDescriptor创建OH_ImageSourceNative指针。 | 77| [Image_ErrorCode OH_ImageSourceNative_CreatePixelmap(OH_ImageSourceNative *source, OH_DecodingOptions *options, OH_PixelmapNative **pixelmap)](#oh_imagesourcenative_createpixelmap) | 通过图片解码参数创建OH_PixelmapNative指针。 | 78| [Image_ErrorCode OH_ImageSourceNative_CreatePixelmapUsingAllocator(OH_ImageSourceNative *source, OH_DecodingOptions *options, IMAGE_ALLOCATOR_TYPE allocator, OH_PixelmapNative **pixelmap)](#oh_imagesourcenative_createpixelmapusingallocator) | 根据解码参数创建一个PixelMap,PixelMap使用的内存类型可以通过allocatorType来指定。<br> 默认情况下,系统会根据图像类型、图像大小、平台能力等选择内存类型。在处理通过此接口返回的PixelMap时,请始终考虑步幅(stride)的影响。 | 79| [Image_ErrorCode OH_ImageSourceNative_CreatePixelmapList(OH_ImageSourceNative *source, OH_DecodingOptions *options, OH_PixelmapNative *resVecPixMap[], size_t size)](#oh_imagesourcenative_createpixelmaplist) | 通过图片解码参数创建OH_PixelmapNative数组。<br> 注意,此接口会一次性解码全部帧,当帧数过多或单帧图像过大时,会占用较大内存,造成系统内存紧张,此种情况推荐使用Image组件显示动图,Image组件采用逐帧解码,占用内存比此接口少。 | 80| [Image_ErrorCode OH_ImageSourceNative_CreatePicture(OH_ImageSourceNative *source, OH_DecodingOptionsForPicture *options, OH_PictureNative **picture)](#oh_imagesourcenative_createpicture) | 通过图片解码创建OH_PictureNative指针。 | 81| [Image_ErrorCode OH_ImageSourceNative_CreatePictureAtIndex(OH_ImageSourceNative *source, uint32_t index, OH_PictureNative **picture)](#oh_imagesourcenative_createpictureatindex) | 通过指定序号的图片解码创建OH_PictureNative指针。 | 82| [Image_ErrorCode OH_ImageSourceNative_GetDelayTimeList(OH_ImageSourceNative *source, int32_t *delayTimeList, size_t size)](#oh_imagesourcenative_getdelaytimelist) | 获取图像延迟时间数组。 | 83| [Image_ErrorCode OH_ImageSourceNative_GetImageInfo(OH_ImageSourceNative *source, int32_t index, OH_ImageSource_Info *info)](#oh_imagesourcenative_getimageinfo) | 获取指定序号的图片信息。 | 84| [Image_ErrorCode OH_ImageSourceNative_GetImageProperty(OH_ImageSourceNative *source, Image_String *key, Image_String *value)](#oh_imagesourcenative_getimageproperty) | 获取图片指定属性键的值。 | 85| [Image_ErrorCode OH_ImageSourceNative_GetImagePropertyWithNull(OH_ImageSourceNative *source, Image_String *key, Image_String *value)](#oh_imagesourcenative_getimagepropertywithnull) | 获取图像属性值。输出的value.data以字符串结束符结尾。 | 86| [Image_ErrorCode OH_ImageSourceNative_ModifyImageProperty(OH_ImageSourceNative *source, Image_String *key, Image_String *value)](#oh_imagesourcenative_modifyimageproperty) | 通过指定的键修改图片属性的值。 | 87| [Image_ErrorCode OH_ImageSourceNative_GetFrameCount(OH_ImageSourceNative *source, uint32_t *frameCount)](#oh_imagesourcenative_getframecount) | 获取图像帧数。 | 88| [Image_ErrorCode OH_ImageSourceNative_GetSupportedFormats(Image_MimeType **supportedFormats, size_t *length)](#oh_imagesourcenative_getsupportedformats) | 获取支持解码的图片格式。 | 89| [Image_ErrorCode OH_ImageSourceNative_Release(OH_ImageSourceNative *source)](#oh_imagesourcenative_release) | 释放OH_ImageSourceNative指针。 | 90| [Image_ErrorCode OH_DecodingOptionsForPicture_Create(OH_DecodingOptionsForPicture **options)](#oh_decodingoptionsforpicture_create) | 创建OH_DecodingOptionsForPicture指针。 | 91| [Image_ErrorCode OH_DecodingOptionsForPicture_GetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options, Image_AuxiliaryPictureType **desiredAuxiliaryPictures, size_t *length)](#oh_decodingoptionsforpicture_getdesiredauxiliarypictures) | 获取解码时设置的期望辅助图(期望解码出的picture包含的辅助图)。 | 92| [Image_ErrorCode OH_DecodingOptionsForPicture_SetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options, Image_AuxiliaryPictureType *desiredAuxiliaryPictures, size_t length)](#oh_decodingoptionsforpicture_setdesiredauxiliarypictures) | 设置解码选项中的期望辅助图。 | 93| [Image_ErrorCode OH_DecodingOptionsForPicture_Release(OH_DecodingOptionsForPicture *options)](#oh_decodingoptionsforpicture_release) | 释放OH_DecodingOptionsForPicture指针。 | 94 95## 枚举类型说明 96 97### IMAGE_DYNAMIC_RANGE 98 99``` 100enum IMAGE_DYNAMIC_RANGE 101``` 102 103**描述** 104 105解码指定期望动态范围。 106 107**起始版本:** 12 108 109| 枚举项 | 描述 | 110| -- | -- | 111| IMAGE_DYNAMIC_RANGE_AUTO = 0 | 根据图片自适应处理。 | 112| IMAGE_DYNAMIC_RANGE_SDR = 1 | 标准动态范围。 | 113| IMAGE_DYNAMIC_RANGE_HDR = 2 | 高动态范围。 | 114 115### IMAGE_ALLOCATOR_TYPE 116 117``` 118enum IMAGE_ALLOCATOR_TYPE 119``` 120 121**描述** 122 123用于分配PixelMap内存的分配器类型。 124 125**起始版本:** 15 126 127| 枚举项 | 描述 | 128| -- | -- | 129| IMAGE_ALLOCATOR_TYPE_AUTO = 0 | 由系统决定使用DMA内存或共享内存来创建PixelMap。 | 130| IMAGE_ALLOCATOR_TYPE_DMA = 1 | 使用DMA内存来创建PixelMap。 | 131| IMAGE_ALLOCATOR_TYPE_SHARE_MEMORY = 2 | 使用共享内存来创建PixelMap。 | 132 133### Image_CropAndScaleStrategy 134 135``` 136enum Image_CropAndScaleStrategy 137``` 138 139**描述** 140 141在同时指定desiredSize和desiredRegion时执行裁剪和缩放的策略。<br> 如果在配置解码选项[OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md)时,未填入参数Image_CropAndScaleStrategy,并且同时设置了desiredRegion和desiredSize,由于系统对于不同图片格式采用的解码算法不同,最终解码效果将略有差异。<br> 例如原始图片大小200x200,传入desiredSize:{width: 150, height: 150},desiredRegion:{x: 0, y: 0, width: 100, height: 100},即预期解码原图左上角1/4区域,最终将pixelMap大小缩放至150x150返回。<br> 对于jpeg、webp图片(部分dng图片解码时会优先解码图片中的jpeg预览图,在此场景下也会被视为jpeg图片格式)会先进行下采样,例如按照7/8下采样,再基于175x175的图片大小进行区域裁剪,因此最终的区域内容稍大于原图的左上角1/4区域。<br> 对于svg图片,由于是矢量图,可以任意缩放不损失清晰度,在解码时会根据desiredSize与原图Size的比例选择缩放比例,在基于缩放后的图片大小进行区域裁剪,因此最终返回的解码区域会有所差异。<br> 针对该场景,建议在解码选项同时设置了desiredRegion与desiredSize时,参数Image_CropAndScaleStrategy应传入CROP_FIRST参数保证效果一致。 142 143**起始版本:** 18 144 145| 枚举项 | 描述 | 146| -- | -- | 147| IMAGE_CROP_AND_SCALE_STRATEGY_SCALE_FIRST = 1 | 先裁剪,后缩放。 | 148| IMAGE_CROP_AND_SCALE_STRATEGY_CROP_FIRST = 2 | 先缩放,后裁剪。 | 149 150 151## 函数说明 152 153### OH_ImageSourceInfo_Create() 154 155``` 156Image_ErrorCode OH_ImageSourceInfo_Create(OH_ImageSource_Info **info) 157``` 158 159**描述** 160 161创建OH_ImageSource_Info指针。 162 163**起始版本:** 12 164 165 166**参数:** 167 168| 参数项 | 描述 | 169| -- | -- | 170| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) **info | 被操作的OH_ImageSource_Info指针。 | 171 172**返回:** 173 174| 类型 | 说明 | 175| -- | -- | 176| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:参数错误。 | 177 178### OH_ImageSourceInfo_GetWidth() 179 180``` 181Image_ErrorCode OH_ImageSourceInfo_GetWidth(OH_ImageSource_Info *info, uint32_t *width) 182``` 183 184**描述** 185 186获取图片的宽。 187 188**起始版本:** 12 189 190 191**参数:** 192 193| 参数项 | 描述 | 194| -- | -- | 195| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | 被操作的OH_ImageSource_Info指针。 | 196| uint32_t *width | 图片的宽,单位:像素。 | 197 198**返回:** 199 200| 类型 | 说明 | 201| -- | -- | 202| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 203 204### OH_ImageSourceInfo_GetHeight() 205 206``` 207Image_ErrorCode OH_ImageSourceInfo_GetHeight(OH_ImageSource_Info *info, uint32_t *height) 208``` 209 210**描述** 211 212获取图片的高。 213 214**起始版本:** 12 215 216 217**参数:** 218 219| 参数项 | 描述 | 220| -- | -- | 221| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | 被操作的OH_ImageSource_Info指针。 | 222| uint32_t *height | 图片的高,单位:像素高 | 223 224**返回:** 225 226| 类型 | 说明 | 227| -- | -- | 228| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:参数错误。 | 229 230### OH_ImageSourceInfo_GetDynamicRange() 231 232``` 233Image_ErrorCode OH_ImageSourceInfo_GetDynamicRange(OH_ImageSource_Info *info, bool *isHdr) 234``` 235 236**描述** 237 238获取图片是否为高动态范围的信息。 239 240**起始版本:** 12 241 242 243**参数:** 244 245| 参数项 | 描述 | 246| -- | -- | 247| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | 被操作的OH_ImageSource_Info指针。 | 248| bool *isHdr | 是否为hdr的布尔值。 | 249 250**返回:** 251 252| 类型 | 说明 | 253| -- | -- | 254| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数校验错误。 | 255 256### OH_ImageSourceInfo_GetMimetype() 257 258``` 259Image_ErrorCode OH_ImageSourceInfo_GetMimetype(OH_ImageSource_Info *info, Image_MimeType *mimetype) 260``` 261 262**描述** 263 264获取图片源的MIME类型。 265 266**起始版本:** 20 267 268 269**参数:** 270 271| 参数项 | 描述 | 272| -- | -- | 273| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | OH_ImageSource_Info指针。 | 274| [Image_MimeType](capi-image-nativemodule-image-string.md) *mimetype | 图片源的MIME类型。 | 275 276**返回:** 277 278| 类型 | 说明 | 279| -- | -- | 280| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_SOURCE_INVALID_PARAMETER:参数错误,INFO或者MIME类型为空。 | 281 282### OH_ImageSourceInfo_Release() 283 284``` 285Image_ErrorCode OH_ImageSourceInfo_Release(OH_ImageSource_Info *info) 286``` 287 288**描述** 289 290释放OH_ImageSource_Info指针。 291 292**起始版本:** 12 293 294 295**参数:** 296 297| 参数项 | 描述 | 298| -- | -- | 299| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | 被操作的OH_ImageSource_Info指针。 | 300 301**返回:** 302 303| 类型 | 说明 | 304| -- | -- | 305| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 306 307### OH_DecodingOptions_Create() 308 309``` 310Image_ErrorCode OH_DecodingOptions_Create(OH_DecodingOptions **options) 311``` 312 313**描述** 314 315创建OH_DecodingOptions指针。 316 317**起始版本:** 12 318 319 320**参数:** 321 322| 参数项 | 描述 | 323| -- | -- | 324| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) **options | 被操作的OH_DecodingOptions指针。 | 325 326**返回:** 327 328| 类型 | 说明 | 329| -- | -- | 330| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 331 332### OH_DecodingOptions_GetPixelFormat() 333 334``` 335Image_ErrorCode OH_DecodingOptions_GetPixelFormat(OH_DecodingOptions *options,int32_t *pixelFormat) 336``` 337 338**描述** 339 340获取pixel格式。 341 342**起始版本:** 12 343 344 345**参数:** 346 347| 参数项 | 描述 | 348| -- | -- | 349| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 350| int32_t *pixelFormat | pixel格式[PIXEL_FORMAT](capi-pixelmap-native-h.md#pixel_format)。 | 351 352**返回:** 353 354| 类型 | 说明 | 355| -- | -- | 356| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 357 358### OH_DecodingOptions_SetPixelFormat() 359 360``` 361Image_ErrorCode OH_DecodingOptions_SetPixelFormat(OH_DecodingOptions *options,int32_t pixelFormat) 362``` 363 364**描述** 365 366设置pixel格式。 367 368**起始版本:** 12 369 370 371**参数:** 372 373| 参数项 | 描述 | 374| -- | -- | 375| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 376| int32_t pixelFormat | pixel格式[PIXEL_FORMAT](capi-pixelmap-native-h.md#pixel_format)。 | 377 378**返回:** 379 380| 类型 | 说明 | 381| -- | -- | 382| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 383 384### OH_DecodingOptions_GetIndex() 385 386``` 387Image_ErrorCode OH_DecodingOptions_GetIndex(OH_DecodingOptions *options, uint32_t *index) 388``` 389 390**描述** 391 392获取解码图片序号。 393 394**起始版本:** 12 395 396 397**参数:** 398 399| 参数项 | 描述 | 400| -- | -- | 401| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 402| uint32_t *index | 解码图片序号。 | 403 404**返回:** 405 406| 类型 | 说明 | 407| -- | -- | 408| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 409 410### OH_DecodingOptions_SetIndex() 411 412``` 413Image_ErrorCode OH_DecodingOptions_SetIndex(OH_DecodingOptions *options, uint32_t index) 414``` 415 416**描述** 417 418设置解码图片序号。 419 420**起始版本:** 12 421 422 423**参数:** 424 425| 参数项 | 描述 | 426| -- | -- | 427| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 428| uint32_t index | 解码图片序号。 | 429 430**返回:** 431 432| 类型 | 说明 | 433| -- | -- | 434| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 435 436### OH_DecodingOptions_GetRotate() 437 438``` 439Image_ErrorCode OH_DecodingOptions_GetRotate(OH_DecodingOptions *options, float *rotate) 440``` 441 442**描述** 443 444获取旋转角度。 445 446**起始版本:** 12 447 448 449**参数:** 450 451| 参数项 | 描述 | 452| -- | -- | 453| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 454| float *rotate | 旋转角度,单位为deg。 | 455 456**返回:** 457 458| 类型 | 说明 | 459| -- | -- | 460| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 461 462### OH_DecodingOptions_SetRotate() 463 464``` 465Image_ErrorCode OH_DecodingOptions_SetRotate(OH_DecodingOptions *options, float rotate) 466``` 467 468**描述** 469 470设置旋转角度。 471 472**起始版本:** 12 473 474 475**参数:** 476 477| 参数项 | 描述 | 478| -- | -- | 479| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 480| float rotate | 旋转角度,单位为deg。 | 481 482**返回:** 483 484| 类型 | 说明 | 485| -- | -- | 486| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 487 488### OH_DecodingOptions_GetDesiredSize() 489 490``` 491Image_ErrorCode OH_DecodingOptions_GetDesiredSize(OH_DecodingOptions *options,Image_Size *desiredSize) 492``` 493 494**描述** 495 496获取期望输出大小。 497 498**起始版本:** 12 499 500 501**参数:** 502 503| 参数项 | 描述 | 504| -- | -- | 505| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 506| [Image_Size](capi-image-nativemodule-image-size.md) *desiredSize | 期望输出大小。 | 507 508**返回:** 509 510| 类型 | 说明 | 511| -- | -- | 512| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 513 514### OH_DecodingOptions_SetDesiredSize() 515 516``` 517Image_ErrorCode OH_DecodingOptions_SetDesiredSize(OH_DecodingOptions *options,Image_Size *desiredSize) 518``` 519 520**描述** 521 522设置期望输出大小。 523 524**起始版本:** 12 525 526 527**参数:** 528 529| 参数项 | 描述 | 530| -- | -- | 531| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 532| [Image_Size](capi-image-nativemodule-image-size.md) *desiredSize | 期望输出大小。 | 533 534**返回:** 535 536| 类型 | 说明 | 537| -- | -- | 538| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 539 540### OH_DecodingOptions_GetDesiredRegion() 541 542``` 543Image_ErrorCode OH_DecodingOptions_GetDesiredRegion(OH_DecodingOptions *options,Image_Region *desiredRegion) 544``` 545 546**描述** 547 548获取解码区域。<br> 由于对应SetDesiredRegion接口无法满足区域解码诉求,从API 19开始,推荐配套使用[OH_DecodingOptions_GetCropRegion](#oh_decodingoptions_getcropregion)接口替代。 549 550**起始版本:** 12 551 552 553**参数:** 554 555| 参数项 | 描述 | 556| -- | -- | 557| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 558| [Image_Region](capi-image-nativemodule-image-region.md) *desiredRegion | 解码区域。 | 559 560**返回:** 561 562| 类型 | 说明 | 563| -- | -- | 564| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 565 566### OH_DecodingOptions_SetDesiredRegion() 567 568``` 569Image_ErrorCode OH_DecodingOptions_SetDesiredRegion(OH_DecodingOptions *options,Image_Region *desiredRegion) 570``` 571 572**描述** 573 574设置解码区域。<br> 实际解码结果会按照原图解码,无区域解码效果。从API 19开始,推荐使用接口[OH_DecodingOptions_SetCropRegion](#oh_decodingoptions_setcropregion)替代。 575 576**起始版本:** 12 577 578 579**参数:** 580 581| 参数项 | 描述 | 582| -- | -- | 583| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 584| [Image_Region](capi-image-nativemodule-image-region.md) *desiredRegion | 解码区域。 | 585 586**返回:** 587 588| 类型 | 说明 | 589| -- | -- | 590| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 591 592### OH_DecodingOptions_GetDesiredDynamicRange() 593 594``` 595Image_ErrorCode OH_DecodingOptions_GetDesiredDynamicRange(OH_DecodingOptions *options,int32_t *desiredDynamicRange) 596``` 597 598**描述** 599 600获取解码时设置的期望动态范围。 601 602**起始版本:** 12 603 604 605**参数:** 606 607| 参数项 | 描述 | 608| -- | -- | 609| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 610| int32_t *desiredDynamicRange | 期望的动态范围值[IMAGE_DYNAMIC_RANGE](#image_dynamic_range)。 | 611 612**返回:** 613 614| 类型 | 说明 | 615| -- | -- | 616| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:参数校验错误。 | 617 618### OH_DecodingOptions_SetDesiredDynamicRange() 619 620``` 621Image_ErrorCode OH_DecodingOptions_SetDesiredDynamicRange(OH_DecodingOptions *options,int32_t desiredDynamicRange) 622``` 623 624**描述** 625 626设置解码时的期望动态范围。 627 628**起始版本:** 12 629 630 631**参数:** 632 633| 参数项 | 描述 | 634| -- | -- | 635| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 636| int32_t desiredDynamicRange | 期望的动态范围值[IMAGE_DYNAMIC_RANGE](#image_dynamic_range)。 | 637 638**返回:** 639 640| 类型 | 说明 | 641| -- | -- | 642| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:参数校验错误。 | 643 644### OH_DecodingOptions_GetDesiredColorSpace() 645 646``` 647Image_ErrorCode OH_DecodingOptions_GetDesiredColorSpace(OH_DecodingOptions *options, int32_t *colorSpace) 648``` 649 650**描述** 651 652获取解码参数中设置的色彩空间。 653 654**起始版本:** 20 655 656 657**参数:** 658 659| 参数项 | 描述 | 660| -- | -- | 661| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 解码参数。 | 662| int32_t *colorSpace | 解码参数中设置的色彩空间,参考[ColorSpaceName](../apis-arkgraphics2d/capi-native-color-space-manager-h.md#colorspacename)。 | 663 664**返回:** 665 666| 类型 | 说明 | 667| -- | -- | 668| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:参数错误。options或colorSpace为空。 | 669 670### OH_DecodingOptions_SetDesiredColorSpace() 671 672``` 673Image_ErrorCode OH_DecodingOptions_SetDesiredColorSpace(OH_DecodingOptions *options, int32_t colorSpace) 674``` 675 676**描述** 677 678设置解码期望得到的色彩空间。 679 680**起始版本:** 20 681 682 683**参数:** 684 685| 参数项 | 描述 | 686| -- | -- | 687| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 解码参数。 | 688| int32_t colorSpace | 期望的色彩空间,参考[ColorSpaceName](../apis-arkgraphics2d/capi-native-color-space-manager-h.md#colorspacename)。 | 689 690**返回:** 691 692| 类型 | 说明 | 693| -- | -- | 694| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:参数错误。options为空,或者传入了不支持的colorSpace。 | 695 696### OH_DecodingOptions_SetCropAndScaleStrategy() 697 698``` 699Image_ErrorCode OH_DecodingOptions_SetCropAndScaleStrategy(OH_DecodingOptions *options,int32_t cropAndScaleStrategy) 700``` 701 702**描述** 703 704设置解码选项的裁剪和缩放策略。 705 706**起始版本:** 18 707 708 709**参数:** 710 711| 参数项 | 描述 | 712| -- | -- | 713| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 714| int32_t cropAndScaleStrategy | 在同时指定desiredSize和desiredRegion时执行裁剪和缩放的策略。 | 715 716**返回:** 717 718| 类型 | 说明 | 719| -- | -- | 720| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:options空指针或者cropAndScaleStrategy取值不在Image_CropAndScaleStrategy枚举值定义之中。 | 721 722### OH_DecodingOptions_GetCropAndScaleStrategy() 723 724``` 725Image_ErrorCode OH_DecodingOptions_GetCropAndScaleStrategy(OH_DecodingOptions *options,int32_t *cropAndScaleStrategy) 726``` 727 728**描述** 729 730获取解码选项的裁剪和缩放策略。 731 732**起始版本:** 18 733 734 735**参数:** 736 737| 参数项 | 描述 | 738| -- | -- | 739| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 740| int32_t *cropAndScaleStrategy | 指向在同时指定desiredSize和desiredRegion时执行裁剪和缩放策略的指针。 | 741 742**返回:** 743 744| 类型 | 说明 | 745| -- | -- | 746| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_PARAMETER:options或者cropAndScaleStrategy为空指针。 | 747 748### OH_DecodingOptions_GetCropRegion() 749 750``` 751Image_ErrorCode OH_DecodingOptions_GetCropRegion(OH_DecodingOptions *options, Image_Region *cropRegion) 752``` 753 754**描述** 755 756获取解码参数中的裁剪区域。 757 758**起始版本:** 19 759 760 761**参数:** 762 763| 参数项 | 描述 | 764| -- | -- | 765| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 指向解码参数指针。 | 766| [Image_Region](capi-image-nativemodule-image-region.md) *cropRegion | 指向要裁剪的目标区域指针。 | 767 768**返回:** 769 770| 类型 | 说明 | 771| -- | -- | 772| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:操作成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:options或cropRegion为空。 | 773 774### OH_DecodingOptions_SetCropRegion() 775 776``` 777Image_ErrorCode OH_DecodingOptions_SetCropRegion(OH_DecodingOptions *options, Image_Region *cropRegion) 778``` 779 780**描述** 781 782设置解码参数中的裁剪区域。 783 784**起始版本:** 19 785 786 787**参数:** 788 789| 参数项 | 描述 | 790| -- | -- | 791| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 指向解码参数指针。 | 792| [Image_Region](capi-image-nativemodule-image-region.md) *cropRegion | 指向要裁剪的目标区域指针。 | 793 794**返回:** 795 796| 类型 | 说明 | 797| -- | -- | 798| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:操作成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:options或cropRegion为空。 | 799 800### OH_DecodingOptions_Release() 801 802``` 803Image_ErrorCode OH_DecodingOptions_Release(OH_DecodingOptions *options) 804``` 805 806**描述** 807 808释放OH_DecodingOptions指针。 809 810**起始版本:** 12 811 812 813**参数:** 814 815| 参数项 | 描述 | 816| -- | -- | 817| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 被操作的OH_DecodingOptions指针。 | 818 819**返回:** 820 821| 类型 | 说明 | 822| -- | -- | 823| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 824 825### OH_ImageSourceNative_CreateFromUri() 826 827``` 828Image_ErrorCode OH_ImageSourceNative_CreateFromUri(char *uri, size_t uriSize, OH_ImageSourceNative **res) 829``` 830 831**描述** 832 833通过uri创建OH_ImageSourceNative指针。 834 835**起始版本:** 12 836 837 838**参数:** 839 840| 参数项 | 描述 | 841| -- | -- | 842| char *uri | 指向图像源URI的指针。只接受文件URI或Base64 URI。当前文件资源只支持绝对路径。 | 843| size_t uriSize | URI长度。 | 844| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) **res | 指向c++本地层创建的OH_ImageSourceNative对象的指针。 | 845 846**返回:** 847 848| 类型 | 说明 | 849| -- | -- | 850| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。<br> IMAGE_BAD_SOURCE:解码数据源异常。 | 851 852### OH_ImageSourceNative_CreateFromFd() 853 854``` 855Image_ErrorCode OH_ImageSourceNative_CreateFromFd(int32_t fd, OH_ImageSourceNative **res) 856``` 857 858**描述** 859 860通过fd创建OH_ImageSourceNative指针。 861 862**起始版本:** 12 863 864 865**参数:** 866 867| 参数项 | 描述 | 868| -- | -- | 869| int32_t fd | 文件描述符fd。 | 870| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) **res | 指向c++本地层创建的OH_ImageSourceNative对象的指针。 | 871 872**返回:** 873 874| 类型 | 说明 | 875| -- | -- | 876| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 877 878### OH_ImageSourceNative_CreateFromData() 879 880``` 881Image_ErrorCode OH_ImageSourceNative_CreateFromData(uint8_t *data, size_t dataSize, OH_ImageSourceNative **res) 882``` 883 884**描述** 885 886通过缓冲区数据创建OH_ImageSourceNative指针。<br> data数据应该是未解码的数据,不要传入类似于RBGA,YUV的像素buffer数据,如果想通过像素buffer数据创建pixelMap,可以调用[OH_PixelmapNative_CreatePixelmap](capi-pixelmap-native-h.md#oh_pixelmapnative_createpixelmap)这一类接口。 887 888**起始版本:** 12 889 890 891**参数:** 892 893| 参数项 | 描述 | 894| -- | -- | 895| uint8_t *data | 图像缓冲区数据。 | 896| size_t dataSize | 图像缓冲区数据长度。 | 897| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) **res | 指向c++本地层创建的OH_ImageSourceNative对象的指针。 | 898 899**返回:** 900 901| 类型 | 说明 | 902| -- | -- | 903| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。<br> IMAGE_BAD_SOURCE:解码数据源异常。 | 904 905### OH_ImageSourceNative_CreateFromDataWithUserBuffer() 906 907``` 908Image_ErrorCode OH_ImageSourceNative_CreateFromDataWithUserBuffer(uint8_t *data, size_t datalength,OH_ImageSourceNative **imageSource) 909``` 910 911**描述** 912 913由数据缓存创建图片源。传入的数据缓存将在图片源对象中直接访问,在图片源对象的声明周期内,数据缓存需要保持可用。 914 915**起始版本:** 20 916 917 918**参数:** 919 920| 参数项 | 描述 | 921| -- | -- | 922| uint8_t *data | 数据缓存指针。 | 923| size_t datalength | 数据缓存长度。 | 924| [OH_ImageSourceNative](capi-image-nativemodule-oh-imagesourcenative.md) **imageSource | 图片源的二级指针。 | 925 926**返回:** 927 928| 类型 | 说明 | 929| -- | -- | 930| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_SOURCE_INVALID_PARAMETER:data或imageSource是空指针,datalength为0。 | 931 932### OH_ImageSourceNative_CreateFromRawFile() 933 934``` 935Image_ErrorCode OH_ImageSourceNative_CreateFromRawFile(RawFileDescriptor *rawFile, OH_ImageSourceNative **res) 936``` 937 938**描述** 939 940通过图像资源文件的RawFileDescriptor创建OH_ImageSourceNative指针。 941 942**起始版本:** 12 943 944 945**参数:** 946 947| 参数项 | 描述 | 948| -- | -- | 949| [RawFileDescriptor](../apis-localization-kit/capi-rawfile-rawfiledescriptor.md) *rawFile | 指示raw文件的文件描述符。 | 950| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) **res | 指向c++本地层创建的OH_ImageSourceNative对象的指针。 | 951 952**返回:** 953 954| 类型 | 说明 | 955| -- | -- | 956| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 957 958### OH_ImageSourceNative_CreatePixelmap() 959 960``` 961Image_ErrorCode OH_ImageSourceNative_CreatePixelmap(OH_ImageSourceNative *source, OH_DecodingOptions *options,OH_PixelmapNative **pixelmap) 962``` 963 964**描述** 965 966通过图片解码参数创建OH_PixelmapNative指针。 967 968**起始版本:** 12 969 970 971**参数:** 972 973| 参数项 | 描述 | 974| -- | -- | 975| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 976| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 解码参数。 | 977| [OH_PixelmapNative](capi-image-nativemodule-oh-pixelmapnative.md) **pixelmap | 指向c++本地层创建的OH_PixelmapNative对象的指针。 | 978 979**返回:** 980 981| 类型 | 说明 | 982| -- | -- | 983| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 984 985### OH_ImageSourceNative_CreatePixelmapUsingAllocator() 986 987``` 988Image_ErrorCode OH_ImageSourceNative_CreatePixelmapUsingAllocator(OH_ImageSourceNative *source,OH_DecodingOptions *options, IMAGE_ALLOCATOR_TYPE allocator, OH_PixelmapNative **pixelmap) 989``` 990 991**描述** 992 993根据解码参数创建一个PixelMap,PixelMap使用的内存类型可以通过allocatorType来指定。<br> 默认情况下,系统会根据图像类型、图像大小、平台能力等选择内存类型。在处理通过此接口返回的PixelMap时,请始终考虑步幅(stride)的影响。 994 995**起始版本:** 15 996 997 998**参数:** 999 1000| 参数项 | 描述 | 1001| -- | -- | 1002| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1003| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 解码参数。 | 1004| [IMAGE_ALLOCATOR_TYPE](#image_allocator_type) allocator | 指示返回的PixelMap将使用哪种内存类型。 | 1005| [OH_PixelmapNative](capi-image-nativemodule-oh-pixelmapnative.md) **pixelmap | 指向c++本地层创建的OH_PixelmapNative对象的指针。 | 1006 1007**返回:** 1008 1009| 类型 | 说明 | 1010| -- | -- | 1011| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。<br> IMAGE_BAD_SOURCE:数据源异常。<br> IMAGE_SOURCE_UNSUPPORTED_MIME_TYPE:不支持的MIME类型。<br> IMAGE_SOURCE_TOO_LARGE:图像过大。<br> IMAGE_SOURCE_UNSUPPORTED_ALLOCATOR_TYPE:不支持的分配器类型。例如,使用共享内存解码HDR图像,因为只有DMA支持HDR元数据。<br> IMAGE_SOURCE_UNSUPPORTED_OPTIONS:不支持的选项。例如,无法将图像转换为所需的像素格式。<br> IMAGE_DECODE_FAILED:解码失败。<br> IMAGE_SOURCE_ALLOC_FAILED:内存分配失败。 | 1012 1013### OH_ImageSourceNative_CreatePixelmapList() 1014 1015``` 1016Image_ErrorCode OH_ImageSourceNative_CreatePixelmapList(OH_ImageSourceNative *source, OH_DecodingOptions *options,OH_PixelmapNative *resVecPixMap[], size_t size) 1017``` 1018 1019**描述** 1020 1021通过图片解码参数创建OH_PixelmapNative数组。<br> 注意,此接口会一次性解码全部帧,当帧数过多或单帧图像过大时,会占用较大内存,造成系统内存紧张,此种情况推荐使用Image组件显示动图,Image组件采用逐帧解码,占用内存比此接口少。 1022 1023**起始版本:** 12 1024 1025 1026**参数:** 1027 1028| 参数项 | 描述 | 1029| -- | -- | 1030| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1031| [OH_DecodingOptions](capi-image-nativemodule-oh-decodingoptions.md) *options | 解码参数。 | 1032| [OH_PixelmapNative](capi-image-nativemodule-oh-pixelmapnative.md) *resVecPixMap[] | 指向c++本地层创建的OH_PixelmapNative对象的指针数组。 | 1033| size_t size | 数组长度。 用户可以使用[OH_ImageSourceNative_GetFrameCount](#oh_imagesourcenative_getframecount)获取。 | 1034 1035**返回:** 1036 1037| 类型 | 说明 | 1038| -- | -- | 1039| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。<br> IMAGE_UNSUPPORTED_OPERATION:操作不支持。 | 1040 1041### OH_ImageSourceNative_CreatePicture() 1042 1043``` 1044Image_ErrorCode OH_ImageSourceNative_CreatePicture(OH_ImageSourceNative *source, OH_DecodingOptionsForPicture *options,OH_PictureNative **picture) 1045``` 1046 1047**描述** 1048 1049通过图片解码创建OH_PictureNative指针。 1050 1051**起始版本:** 13 1052 1053 1054**参数:** 1055 1056| 参数项 | 描述 | 1057| -- | -- | 1058| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1059| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) *options | 解码参数。 | 1060| [OH_PictureNative](capi-image-nativemodule-oh-picturenative.md) **picture | 指向c++本地层创建的OH_PictureNative对象的指针。 | 1061 1062**返回:** 1063 1064| 类型 | 说明 | 1065| -- | -- | 1066| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。<br> IMAGE_DECODE_FAILED:解码失败。 | 1067 1068### OH_ImageSourceNative_CreatePictureAtIndex() 1069 1070``` 1071Image_ErrorCode OH_ImageSourceNative_CreatePictureAtIndex(OH_ImageSourceNative *source, uint32_t index,OH_PictureNative **picture) 1072``` 1073 1074**描述** 1075 1076通过指定序号的图片解码创建OH_PictureNative指针。 1077 1078**起始版本:** 20 1079 1080 1081**参数:** 1082 1083| 参数项 | 描述 | 1084| -- | -- | 1085| [OH_ImageSourceNative](capi-image-nativemodule-oh-imagesourcenative.md) *source | 被操作的OH_ImageSourceNative指针。 | 1086| uint32_t index | 解码图片序号。 | 1087| [OH_PictureNative](capi-image-nativemodule-oh-picturenative.md) **picture | 指向c++本地层创建的OH_PictureNative对象的指针。 | 1088 1089**返回:** 1090 1091| 类型 | 说明 | 1092| -- | -- | 1093| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_BAD_SOURCE:数据源异常。<br> IMAGE_SOURCE_UNSUPPORTED_MIME_TYPE:不支持的MIME类型。<br> IMAGE_SOURCE_TOO_LARGE:图像过大。<br> IMAGE_SOURCE_UNSUPPORTED_OPTIONS:不支持的选项。例如,无效的图片序号。<br> IMAGE_DECODE_FAILED:解码失败。 | 1094 1095### OH_ImageSourceNative_GetDelayTimeList() 1096 1097``` 1098Image_ErrorCode OH_ImageSourceNative_GetDelayTimeList(OH_ImageSourceNative *source, int32_t *delayTimeList, size_t size) 1099``` 1100 1101**描述** 1102 1103获取图像延迟时间数组。 1104 1105**起始版本:** 12 1106 1107 1108**参数:** 1109 1110| 参数项 | 描述 | 1111| -- | -- | 1112| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1113| int32_t *delayTimeList | 指向获得的延迟时间列表的指针。它不能是空指针。 | 1114| size_t size | delayTimeList的大小。用户可以从[OH_ImageSourceNative_GetFrameCount](#oh_imagesourcenative_getframecount)获得大小。 | 1115 1116**返回:** 1117 1118| 类型 | 说明 | 1119| -- | -- | 1120| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1121 1122### OH_ImageSourceNative_GetImageInfo() 1123 1124``` 1125Image_ErrorCode OH_ImageSourceNative_GetImageInfo(OH_ImageSourceNative *source, int32_t index,OH_ImageSource_Info *info) 1126``` 1127 1128**描述** 1129 1130获取指定序号的图片信息。 1131 1132**起始版本:** 12 1133 1134 1135**参数:** 1136 1137| 参数项 | 描述 | 1138| -- | -- | 1139| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1140| int32_t index | 图片序号。对GIF图片可传入[0,N-1],N表示GIF的帧数。对只有一帧数据的图片格式,可传入0。 | 1141| [OH_ImageSource_Info](capi-image-nativemodule-imagesource-info.md) *info | 指向获取的图像源信息的OH_ImageSource_Info指针。 | 1142 1143**返回:** 1144 1145| 类型 | 说明 | 1146| -- | -- | 1147| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1148 1149### OH_ImageSourceNative_GetImageProperty() 1150 1151``` 1152Image_ErrorCode OH_ImageSourceNative_GetImageProperty(OH_ImageSourceNative *source, Image_String *key,Image_String *value) 1153``` 1154 1155**描述** 1156 1157获取图片指定属性键的值。 1158 1159**起始版本:** 12 1160 1161 1162**参数:** 1163 1164| 参数项 | 描述 | 1165| -- | -- | 1166| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1167| [Image_String](capi-image-nativemodule-image-string.md) *key | 指示指向属性的指针,详情请参见[Image_String](capi-image-nativemodule-image-string.md),key的取值范围参考[OHOS_IMAGE_PROPERTY_XXX](capi-image-common-h.md#变量)定义。使用ImageSource后释放,参见[OH_ImageSourceNative_Release](#oh_imagesourcenative_release)。 | 1168| [Image_String](capi-image-nativemodule-image-string.md) *value | 指向获取的值的指针。用户可以传入一个空指针和零大小,我们将分配内存,但用户必须在使用后释放内存。 | 1169 1170**返回:** 1171 1172| 类型 | 说明 | 1173| -- | -- | 1174| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1175 1176### OH_ImageSourceNative_GetImagePropertyWithNull() 1177 1178``` 1179Image_ErrorCode OH_ImageSourceNative_GetImagePropertyWithNull(OH_ImageSourceNative *source, Image_String *key,Image_String *value) 1180``` 1181 1182**描述** 1183 1184获取图像属性值。输出的value.data以字符串结束符结尾。 1185 1186**起始版本:** 19 1187 1188 1189**参数:** 1190 1191| 参数项 | 描述 | 1192| -- | -- | 1193| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 指向ImageSource的指针。 | 1194| [Image_String](capi-image-nativemodule-image-string.md) *key | 指向属性键的指针。 | 1195| [Image_String](capi-image-nativemodule-image-string.md) *value | 指向属性值的指针(输出参数)。 | 1196 1197**返回:** 1198 1199| 类型 | 说明 | 1200| -- | -- | 1201| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:source、key或value为空。 | 1202 1203### OH_ImageSourceNative_ModifyImageProperty() 1204 1205``` 1206Image_ErrorCode OH_ImageSourceNative_ModifyImageProperty(OH_ImageSourceNative *source, Image_String *key,Image_String *value) 1207``` 1208 1209**描述** 1210 1211通过指定的键修改图片属性的值。 1212 1213**起始版本:** 12 1214 1215 1216**参数:** 1217 1218| 参数项 | 描述 | 1219| -- | -- | 1220| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1221| [Image_String](capi-image-nativemodule-image-string.md) *key | 指向属性键的指针,详情请参见[Image_String](capi-image-nativemodule-image-string.md),key是一个exif常数。使用ImageSource后释放,参见[OH_ImageSourceNative_Release](#oh_imagesourcenative_release)。 | 1222| [Image_String](capi-image-nativemodule-image-string.md) *value | 需要修改的属性值。 | 1223 1224**返回:** 1225 1226| 类型 | 说明 | 1227| -- | -- | 1228| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1229 1230### OH_ImageSourceNative_GetFrameCount() 1231 1232``` 1233Image_ErrorCode OH_ImageSourceNative_GetFrameCount(OH_ImageSourceNative *source, uint32_t *frameCount) 1234``` 1235 1236**描述** 1237 1238获取图像帧数。 1239 1240**起始版本:** 12 1241 1242 1243**参数:** 1244 1245| 参数项 | 描述 | 1246| -- | -- | 1247| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 被操作的OH_ImageSourceNative指针。 | 1248| uint32_t *frameCount | 图像帧数。 | 1249 1250**返回:** 1251 1252| 类型 | 说明 | 1253| -- | -- | 1254| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1255 1256### OH_ImageSourceNative_GetSupportedFormats() 1257 1258``` 1259Image_ErrorCode OH_ImageSourceNative_GetSupportedFormats(Image_MimeType **supportedFormats, size_t *length) 1260``` 1261 1262**描述** 1263 1264获取支持解码的图片格式。 1265 1266**起始版本:** 20 1267 1268 1269**参数:** 1270 1271| 参数项 | 描述 | 1272| -- | -- | 1273| [Image_MimeType](capi-image-nativemodule-image-string.md) **supportedFormats | 支持解码的图片格式。 | 1274| size_t *length | 数组长度。 | 1275 1276**返回:** 1277 1278| 类型 | 说明 | 1279| -- | -- | 1280| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:操作成功。<br> IMAGE_SOURCE_INVALID_PARAMETER:参数异常,supportedFormats或length为空。 | 1281 1282### OH_ImageSourceNative_Release() 1283 1284``` 1285Image_ErrorCode OH_ImageSourceNative_Release(OH_ImageSourceNative *source) 1286``` 1287 1288**描述** 1289 1290释放OH_ImageSourceNative指针。 1291 1292**起始版本:** 12 1293 1294 1295**参数:** 1296 1297| 参数项 | 描述 | 1298| -- | -- | 1299| [OH_ImageSourceNative](capi-image-imagesourcenative-.md) *source | 要释放的OH_ImageSourceNative指针。 | 1300 1301**返回:** 1302 1303| 类型 | 说明 | 1304| -- | -- | 1305| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1306 1307### OH_DecodingOptionsForPicture_Create() 1308 1309``` 1310Image_ErrorCode OH_DecodingOptionsForPicture_Create(OH_DecodingOptionsForPicture **options) 1311``` 1312 1313**描述** 1314 1315创建OH_DecodingOptionsForPicture指针。 1316 1317**起始版本:** 13 1318 1319 1320**参数:** 1321 1322| 参数项 | 描述 | 1323| -- | -- | 1324| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) **options | 被操作的OH_DecodingOptionsForPicture指针。 | 1325 1326**返回:** 1327 1328| 类型 | 说明 | 1329| -- | -- | 1330| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1331 1332### OH_DecodingOptionsForPicture_GetDesiredAuxiliaryPictures() 1333 1334``` 1335Image_ErrorCode OH_DecodingOptionsForPicture_GetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options,Image_AuxiliaryPictureType **desiredAuxiliaryPictures, size_t *length) 1336``` 1337 1338**描述** 1339 1340获取解码时设置的期望辅助图(期望解码出的picture包含的辅助图)。 1341 1342**起始版本:** 13 1343 1344 1345**参数:** 1346 1347| 参数项 | 描述 | 1348| -- | -- | 1349| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) *options | 被操作的OH_DecodingOptionsForPicture指针。 | 1350| [Image_AuxiliaryPictureType](capi-picture-native-h.md#image_auxiliarypicturetype) **desiredAuxiliaryPictures | 解码选项中的期望辅助图。 | 1351| size_t *length | 期望辅助图长度。 | 1352 1353**返回:** 1354 1355| 类型 | 说明 | 1356| -- | -- | 1357| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1358 1359### OH_DecodingOptionsForPicture_SetDesiredAuxiliaryPictures() 1360 1361``` 1362Image_ErrorCode OH_DecodingOptionsForPicture_SetDesiredAuxiliaryPictures(OH_DecodingOptionsForPicture *options,Image_AuxiliaryPictureType *desiredAuxiliaryPictures, size_t length) 1363``` 1364 1365**描述** 1366 1367设置解码选项中的期望辅助图。 1368 1369**起始版本:** 13 1370 1371 1372**参数:** 1373 1374| 参数项 | 描述 | 1375| -- | -- | 1376| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) *options | 被操作的OH_DecodingOptionsForPicture指针。 | 1377| [Image_AuxiliaryPictureType](capi-picture-native-h.md#image_auxiliarypicturetype) *desiredAuxiliaryPictures | 将要设置的期望辅助图。 | 1378| size_t length | 期望辅助图长度。 | 1379 1380**返回:** 1381 1382| 类型 | 说明 | 1383| -- | -- | 1384| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1385 1386### OH_DecodingOptionsForPicture_Release() 1387 1388``` 1389Image_ErrorCode OH_DecodingOptionsForPicture_Release(OH_DecodingOptionsForPicture *options) 1390``` 1391 1392**描述** 1393 1394释放OH_DecodingOptionsForPicture指针。 1395 1396**起始版本:** 13 1397 1398 1399**参数:** 1400 1401| 参数项 | 描述 | 1402| -- | -- | 1403| [OH_DecodingOptionsForPicture](capi-image-nativemodule-oh-decodingoptionsforpicture.md) *options | 要释放的OH_DecodingOptionsForPicture指针。 | 1404 1405**返回:** 1406 1407| 类型 | 说明 | 1408| -- | -- | 1409| [Image_ErrorCode](capi-image-common-h.md#image_errorcode) | IMAGE_SUCCESS:执行成功。 <br> IMAGE_BAD_PARAMETER:参数错误。 | 1410 1411 1412