已合并
添加C api示例代码;增加接口说明 #112207
sss创建于 2025年10月17日
添加C api示例代码;增加接口说明 #112207
已合并
共 2 个文件变更+48-2
| @@ -150,4 +150,50 @@ Image_ErrorCode PixelmapTest() | |||
| 150 | OH_PixelmapInitializationOptions_Release(createOpts); | 150 | OH_PixelmapInitializationOptions_Release(createOpts); |
| 151 | return IMAGE_SUCCESS; | 151 | return IMAGE_SUCCESS; |
| 152 | } | 152 | } |
| 153 | + | ||
| 154 | +// PixelMap预乘/非预乘格式转换示例。 | ||
| 155 | +Image_ErrorCode PixelmapConverAlphaTypeTest() | ||
| 156 | +{ | ||
| 157 | + uint8_t data[96]; | ||
| 158 | + size_t dataSize = 96; | ||
| 159 | + for (int i = 0; i < dataSize; i++) { | ||
| 160 | + data[i] = i + 1; | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + // 创建参数结构体实例,并设置参数。 | ||
| 164 | + OH_Pixelmap_InitializationOptions *createOpts; | ||
| 165 | + OH_PixelmapInitializationOptions_Create(&createOpts); | ||
| 166 | + OH_PixelmapInitializationOptions_SetWidth(createOpts, 6); | ||
| 167 | + OH_PixelmapInitializationOptions_SetHeight(createOpts, 4); | ||
| 168 | + OH_PixelmapInitializationOptions_SetSrcPixelFormat(createOpts, PIXEL_FORMAT_RGBA_8888); | ||
| 169 | + OH_PixelmapInitializationOptions_SetPixelFormat(createOpts, PIXEL_FORMAT_RGBA_8888); | ||
| 170 | + OH_PixelmapInitializationOptions_SetAlphaType(createOpts, PIXELMAP_ALPHA_TYPE_UNPREMULTIPLIED); | ||
| 171 | + | ||
| 172 | + // 创建非预乘格式的位图实例。 | ||
| 173 | + OH_PixelmapNative *SrcPixelmap = nullptr; | ||
| 174 | + Image_ErrorCode errCode = OH_PixelmapNative_CreatePixelmap(data, dataSize, createOpts, &SrcPixelmap); | ||
| 175 | + if (errCode != IMAGE_SUCCESS) { | ||
| 176 | + OH_LOG_ERROR(LOG_APP, "PixelmapConverAlphaTypeTest CreateSrcPixelMap failed, errCode: %{public}d.", errCode); | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + // 创建预乘格式的位图实例,该DstPixelmap实例将用于保存SrcPixelmap转换AlphaType后的数据。 | ||
| 180 | + OH_PixelmapNative *DstPixelmap = nullptr; | ||
| 181 | + OH_PixelmapInitializationOptions_SetAlphaType(createOpts, PIXELMAP_ALPHA_TYPE_PREMULTIPLIED); | ||
| 182 | + errCode = OH_PixelmapNative_CreatePixelmap(data, dataSize, createOpts, &DstPixelmap); | ||
| 183 | + if (errCode != IMAGE_SUCCESS) { | ||
| 184 | + OH_LOG_ERROR(LOG_APP, "PixelmapConverAlphaTypeTest CreateDstPixelMap failed, errCode: %{public}d.", errCode); | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + // 转换AlphaType,SrcPixelmap的数据将被转换为预乘格式,并保存到DstPixelmap中。 | ||
| 188 | + errCode = OH_PixelmapNative_ConvertAlphaFormat(SrcPixelmap, DstPixelmap, true); | ||
| 189 | + if (errCode != IMAGE_SUCCESS) { | ||
| 190 | + OH_LOG_ERROR(LOG_APP, "PixelmapConverAlphaTypeTest ConvertAlphaFormat failed, errCode: %{public}d.", errCode); | ||
| 191 | + } | ||
| 192 | + | ||
| 193 | + // 释放Pixelmap,InitializationOptions实例。 | ||
| 194 | + OH_PixelmapNative_Release(SrcPixelmap); | ||
| 195 | + OH_PixelmapNative_Release(DstPixelmap); | ||
| 196 | + OH_PixelmapInitializationOptions_Release(createOpts); | ||
| 197 | + return errCode; | ||
| 198 | +} | ||
| 153 | ``` | 199 | ``` |
| @@ -72,7 +72,7 @@ | |||
| 72 | | [Image_ErrorCode OH_PixelmapImageInfo_GetAlphaMode(OH_Pixelmap_ImageInfo *info, int32_t *AlphaMode)](#oh_pixelmapimageinfo_getalphamode) | 获取图片alpha格式。 | | 72 | | [Image_ErrorCode OH_PixelmapImageInfo_GetAlphaMode(OH_Pixelmap_ImageInfo *info, int32_t *AlphaMode)](#oh_pixelmapimageinfo_getalphamode) | 获取图片alpha格式。 | |
| 73 | | [Image_ErrorCode OH_PixelmapImageInfo_GetRowStride(OH_Pixelmap_ImageInfo *info, uint32_t *rowStride)](#oh_pixelmapimageinfo_getrowstride) | 获取行跨距。 | | 73 | | [Image_ErrorCode OH_PixelmapImageInfo_GetRowStride(OH_Pixelmap_ImageInfo *info, uint32_t *rowStride)](#oh_pixelmapimageinfo_getrowstride) | 获取行跨距。 | |
| 74 | | [Image_ErrorCode OH_PixelmapImageInfo_GetPixelFormat(OH_Pixelmap_ImageInfo *info, int32_t *pixelFormat)](#oh_pixelmapimageinfo_getpixelformat) | 获取像素格式。 | | 74 | | [Image_ErrorCode OH_PixelmapImageInfo_GetPixelFormat(OH_Pixelmap_ImageInfo *info, int32_t *pixelFormat)](#oh_pixelmapimageinfo_getpixelformat) | 获取像素格式。 | |
| 75 | -| [Image_ErrorCode OH_PixelmapImageInfo_GetAlphaType(OH_Pixelmap_ImageInfo *info, int32_t *alphaType)](#oh_pixelmapimageinfo_getalphatype) | 获取透明度类型。 | | 75 | +| [Image_ErrorCode OH_PixelmapImageInfo_GetAlphaType(OH_Pixelmap_ImageInfo *info, int32_t *alphaType)](#oh_pixelmapimageinfo_getalphatype) | 获取预乘格式图片的透明度类型。全量格式场景,推荐使用[OH_PixelmapImageInfo_GetAlphaMode](#oh_pixelmapimageinfo_getalphamode)。| |
7 | |||
| 76 | | [Image_ErrorCode OH_PixelmapImageInfo_GetDynamicRange(OH_Pixelmap_ImageInfo *info, bool *isHdr)](#oh_pixelmapimageinfo_getdynamicrange) | 获取Pixelmap是否为高动态范围的信息。 | | 76 | | [Image_ErrorCode OH_PixelmapImageInfo_GetDynamicRange(OH_Pixelmap_ImageInfo *info, bool *isHdr)](#oh_pixelmapimageinfo_getdynamicrange) | 获取Pixelmap是否为高动态范围的信息。 | |
| 77 | | [Image_ErrorCode OH_PixelmapImageInfo_Release(OH_Pixelmap_ImageInfo *info)](#oh_pixelmapimageinfo_release) | 释放OH_Pixelmap_ImageInfo指针。 | | 77 | | [Image_ErrorCode OH_PixelmapImageInfo_Release(OH_Pixelmap_ImageInfo *info)](#oh_pixelmapimageinfo_release) | 释放OH_Pixelmap_ImageInfo指针。 | |
| 78 | | [Image_ErrorCode OH_PixelmapNative_CreatePixelmap(uint8_t *data, size_t dataLength, OH_Pixelmap_InitializationOptions *options, OH_PixelmapNative **pixelmap)](#oh_pixelmapnative_createpixelmap) | 通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,其他格式请参考[OH_PixelmapInitializationOptions_SetSrcPixelFormat](#oh_pixelmapinitializationoptions_setsrcpixelformat)。 | | 78 | | [Image_ErrorCode OH_PixelmapNative_CreatePixelmap(uint8_t *data, size_t dataLength, OH_Pixelmap_InitializationOptions *options, OH_PixelmapNative **pixelmap)](#oh_pixelmapnative_createpixelmap) | 通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,其他格式请参考[OH_PixelmapInitializationOptions_SetSrcPixelFormat](#oh_pixelmapinitializationoptions_setsrcpixelformat)。 | |
| @@ -794,7 +794,7 @@ Image_ErrorCode OH_PixelmapImageInfo_GetAlphaType(OH_Pixelmap_ImageInfo *info, i | |||
| 794 | 794 | ||
| 795 | **描述** | 795 | **描述** |
| 796 | 796 | ||
| 797 | -获取透明度类型。 | 797 | +获取预乘格式图片的透明度类型。全量格式场景,推荐使用[OH_PixelmapImageInfo_GetAlphaMode](#oh_pixelmapimageinfo_getalphamode)。 |
![]() ![]() | |||
| 798 | 798 | ||
| 799 | **起始版本:** 12 | 799 | **起始版本:** 12 |
| 800 | 800 | ||


1.这个 全量模式场景 中文术语在哪里有说明,找一下对应的介绍或者网页解释。
2.OH_PixelmapImageInfo_GetAlphaMode是获取alpha格式。什么是alpha格式没有介绍,需要解释。
GetAlphaType的定义是获取预乘格式图片的透明度类型,获取alpha格式和获取透明度类型的关系需要说明。
3.为什么全量模式场景上要推荐用OH_PixelmapImageInfo_GetAlphaMode。