已合并
添加C api示例代码;增加接口说明 #112207
sss创建于 2025年10月17日
添加C api示例代码;增加接口说明 #112207
已合并
sss创建于 2025年10月17日
共 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
777_cc2025年10月21日

1.这个 全量模式场景 中文术语在哪里有说明,找一下对应的介绍或者网页解释。

2.OH_PixelmapImageInfo_GetAlphaMode是获取alpha格式。什么是alpha格式没有介绍,需要解释。

GetAlphaType的定义是获取预乘格式图片的透明度类型,获取alpha格式和获取透明度类型的关系需要说明。

3.为什么全量模式场景上要推荐用OH_PixelmapImageInfo_GetAlphaMode。

likedislike
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)。
wanglu11941024
wanglu11941024wanglu119410242025年10月17日
  1. 描述修改,sig仓要同步修改
  2. 这里也要改 zh-cn/application-dev/reference/apis-image-kit/capi-pixelmap-native-h.md#函数
  3. 什么是‘预乘格式’,这个修改背景是什么
likedislike
sss
sss
2025年10月17日 评论:
798 798 
799**起始版本:** 12799**起始版本:** 12
800 800