HarmonyOS OH_PixelMap_CreatePixelMap引发的崩溃问题

1、OH_PixelMap_CreatePixelMap中的pixelmap是如何进行内存管理的?参考文档malloc了一份内存并未释放,是否交给了OH_PixelMap_CreatePixelMap创建的map进行管理?如果已经有一个buffer了需要将图像返回给JS层,最佳实践是什么?通过profiler测试发现,按照华为文档(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-pixelmap-operation-native-V5)代码参考进行新内存开辟方法,在c++层多次创建pixelmap后,内存会持续增长;而直接将AI返回的图像指针用于OH_PixelMap_CreatePixelMap时,UI显示正常且内存可以正常释放。

2、Log中的[NAPI]GetColorSpaceByJSObject::jsColorSpace is nullptr是什么错误?Log中的pixmapNapi unwrapped is nullptr,是什么原因?

3、OhosPixelMapCreateOps.pixelFormat是否与image.DecodingOptions.desiredPixelFormat中的格式定义一致?

4、如果pixelmap需要给UI显示,在c++层需要指定什么格式给OhosPixelMapCreateOps.pixelFormat?4吗?

5、AI能力处理结果为一张单通道灰度图,使用OH_PixelMap_CreatePixelMap进行数据包装返回给UI层,会高概率在调用OH_PixelMap_CreatePixelMap函数时崩溃?同时需要包装不同格式的图像给UI层,最佳实践是什么?

HarmonyOS
2025-01-10 08:09:05
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

通过OH_Pixelmap_CreatePixelMap创建的对象在ArkTS侧和Native侧会共享同一份内存。

一、要将图像返回给JS层:

1.创建JS Buffer:

使用napi_create_buffer接口创建一个JS Buffer,并将图像数据初始化到Buffer中。确保Buffer的类型和大小适合图像数据。

2.返回JS Buffer:

将创建的JS Buffer返回给JS层。可以通过napi_create_external_buffer接口创建带有外部数据的JS Buffer,这样可以为Buffer附带额外的信息 。

3.处理图像数据传递:

在JS层,图像数据可以通过JS Buffer进行处理和显示。确保在JS层正确处理和使用返回的Buffer。

4.清理资源:

在完成图像处理后,调用napi_release_buffer接口释放JS Buffer,以避免内存泄漏。

二、GetColorSpaceByJSObject::jsColorSpace is nullptr 、pixmapNapi unwrapped is nullptr表明jsColorSpace、pixmapNapi为空指针,可能有多种原因导致,具体需要结合代码自行排查。

三、OhosPixelMapCreateOps.pixelFormat用于指定生成的PixelMap的像素格式,而image.DecodingOptions.desiredPixelFormat用于指定解码的像素格式,二者格式定义一致。

四、在C++层为OhosPixelMapCreateOps.pixelFormat指定格式时,需要根据具体的UI需求选择合适的像素格式。常见的像素格式包括RGBA_8888、BGRA_8888和RGB_565等。

五、在调用OH_PixelMap_CreatePixelMap函数时崩溃,可能是由于以下原因:

1、传入的图像数据格式不支持或损坏。

2、图像数据大小超过了系统限制(如像素map序列化大小最大为128MB) 。

3、系统资源不足或内存分配失败。

处理建议:

1、确保传入的图像数据是有效的BGRA_8888格式,并且不超过系统限制。

2、检查图像数据的大小,并根据需要调整处理逻辑,避免超过系统限制。

3、确保系统资源充足,避免内存分配失败。

HarmonyOS支持多种图像格式,包括BGRA_8888、JPG、PNG等,根据具体需求选择合适的图像格式进行处理和包装。

分享
微博
QQ
微信
回复
2025-01-10 10:40:21
相关问题
Native Image模块API-OH_PixelMap_CreatePixelMap
2134浏览 • 1回复 待解决
HarmonyOS 调用OH_LOG_SetCallback接口崩溃
281浏览 • 1回复 待解决
HarmonyOS image.createPixelMap使用问题
557浏览 • 1回复 待解决
HarmonyOS PixelMap问题
171浏览 • 1回复 待解决
HarmonyOS 关于OH_AudioRenderer问题
720浏览 • 1回复 待解决
HarmonyOS sendable崩溃问题
203浏览 • 1回复 待解决
eglSwapBuffers崩溃问题
989浏览 • 1回复 待解决
HarmonyOS OH_AudioRenderer_GetTimestamp问题
448浏览 • 1回复 待解决
升级IDEA版本引起引发错误
537浏览 • 1回复 待解决