Native Image模块API-OH_PixelMap_InitNativePixelMap

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/image-0000001774121838调用Native Image模块的OH_PixelMap_InitNativePixelMap函数,想初始化一个NativePixelMap对象。

发现一个问题:传入一个RGBA的图像数据,会得到一个BGRA的图像,传入BGRA会得到RGBA的图像。实际上传入RGBA的数据,想得到的是RGBA的图像。

没看到有相应的参数控制,有没有解决。

Native C++开发,想拷贝一份NativePixelMap对象。

HarmonyOS
2024-05-08 23:29:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
wjmfzsz

可以通过设置OhosPixelMapCreateOps 中的info参数即可:

napi_value CreatePixelMaptest(napi_env env, napi_callback_info info) { 
napi_value udfVar = nullptr; 
napi_value pixelmap = nullptr; 
 
struct OhosPixelMapCreateOps createOps; 
createOps.width = 4; 
createOps.height = 6; 
createOps.pixelFormat = 3; // 设置为3,图片格式为RGBA,设置为4,图片格式为BGRA 
createOps.alphaType = 0; 
size_t bufferSize = createOps.width * createOps.height * 4; 
void *buff = malloc(bufferSize); 
 
int32_t res = OH_PixelMap_CreatePixelMap(env, createOps, (uint8_t *)buff, bufferSize, &pixelmap); 
if (res != IMAGE_RESULT_SUCCESS || pixelmap == nullptr) { 
return udfVar; 
} 
return pixelmap; 
}

可以通过调整demo中createOps.pixelFormat的值修改图像数据的格式,若设置为3,图片格式为RGBA;设置为4,图片格式为BGRA。

关于OhosPixelMapCreateOps更详细的内容可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/_ohos_pixel_map_create_ops-0000001820881505

分享
微博
QQ
微信
回复
2024-05-09 14:38:01
相关问题
Native Image模块API-OH_PixelMap_CreatePixelMap
1598浏览 • 1回复 待解决
PixelMap数据处理(Native)
1106浏览 • 1回复 待解决
Native侧进行跨模块加载
729浏览 • 1回复 待解决