#鸿蒙通关秘籍#如何通过Native实现将网络图片保存到应用沙箱中?

HarmonyOS
2024-12-06 15:58:53
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
SaaS风绘空

实现将网络图片保存到应用沙箱中可以通过以下步骤:

  1. 首先,需要编译libcurl等相关的开源库文件。下载包括libcurl.solibnghttp2.solibzstd.so在内的必要的so文件,并将它们放入模块的libs目录中。

  2. 配置CMakeLists文件,确保链接到这些库:

    target_link_directories(nativesavepictosandbox PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/)
    target_link_libraries(nativesavepictosandbox PUBLIC libace_napi.z.so libcurlDownload.so libhilog_ndk.z.so librawfile.z.so)
    
    • 1.
    • 2.
  3. 在前端,通过调用Native中的saveImageOfInternet接口,将获取到的沙箱路径转换为URI后绑定到Image组件上:

    Button($r('app.string.tbn_InternetPicture'))
      .onClick(() => {
        let sandBoxPath = testNapi.saveImageOfInternet(this.internetPicUrl, this.fileDir, this.internetSandBoxFileName);
        if (sandBoxPath === undefined) {
          AlertDialog.show({ message: `网络图片写入失败`, alignment: DialogAlignment.Center });
          this.internetSandBoxPath = '';
        } else {
          this.internetSandBoxPath = fileUri.getUriFromPath(sandBoxPath);
        }
      })
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
  4. 在Native层,通过动态加载的方式调用libcurlDownload.so来下载图片并保存:

    void *handler = dlopen(libCurlDownload, RTLD_LAZY);
    if (handler == nullptr) {
        dlerror();
        return nullptr;
    }
    
    typedef napi_value (*DownloadInternetFileFunc)(napi_env, napi_callback_info);
    DownloadInternetFileFunc downloadInternetWrapper =
        reinterpret_cast<DownloadInternetFileFunc>(dlsym(handler, "DownloadInternetFileWrapper"));
    if (downloadInternetWrapper) {
        napi_value result = downloadInternetWrapper(env, info);
        dlclose(handler);
        return result;
    } else {
        dlclose(handler);
        return nullptr;
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
分享
微博
QQ
微信
回复
2024-12-06 18:02:29


相关问题
获取网络图片保存到相册
2432浏览 • 1回复 待解决
应用沙箱下的图片保存到图库
1920浏览 • 1回复 待解决
如何保存网络图片到相册
1370浏览 • 1回复 待解决
怎么实现保存网络图片到相册功能?
1230浏览 • 1回复 待解决
如何保存http网络图片到本地
606浏览 • 1回复 待解决
HarmonyOS 保存网络图片,图库更新
732浏览 • 1回复 待解决
HarmonyOS 使用picker保存网络图片
324浏览 • 1回复 待解决
HarmonyOS 保存网络图片至图库问题
657浏览 • 1回复 待解决
HarmonyOS 保存网络图片到手机图库
363浏览 • 1回复 待解决