#鸿蒙通关秘籍#利用Native如何将Rawfile中的图片保存到应用沙箱?

HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
SCIM梦幻旅

将Rawfile中的图片保存到沙箱的步骤如下:

  1. 在前端,需要通过调用Native的saveImageOfRawfile接口,获取沙箱的路径,并将这个路径转换为URI绑定到Image组件上:

    Button($r('app.string.tbn_RawFilePicture'))
      .onClick(() => {
        let sandBoxPath = testNapi.saveImageOfRawfile(this.resMgr, this.rawfilePicPath, this.fileDir);
        if (sandBoxPath === undefined) {
          AlertDialog.show({ message: `Rawfile图片写入失败`, alignment: DialogAlignment.Center });
          this.rawfileSandBoxPath = '';
        } else {
          this.rawfileSandBoxPath = fileUri.getUriFromPath(sandBoxPath);
        }
      })
    
  2. 在Native层,使用Rawfile API读取图片资源并写入沙箱:

    RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, rawFileName.c_str());
    if (rawFile == nullptr) {
        OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
        return nullptr;
    }
    
    long imageDataSize = OH_ResourceManager_GetRawFileSize(rawFile);
    std::unique_ptr<char[]> imageData = std::make_unique<char[]>(imageDataSize);
    long rawFileOffset = OH_ResourceManager_ReadRawFile(rawFile, imageData.get(), imageDataSize);
    
    std::string targetSandboxPath = targetDirectory + rawFileName;
    std::ofstream outputFile(targetSandboxPath, std::ios::binary);
    if (!outputFile) {
        OH_ResourceManager_CloseRawFile(rawFile);
        OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);
        return nullptr;
    }
    
    outputFile.write(imageData.get(), imageDataSize);
    

按照上述步骤进行操作,可以实现将Rawfile中的图片保存到应用沙箱。通过方法调用与必要的资源管理,可确保图片资源在特定的沙箱路径中被正确保存和使用。

分享
微博
QQ
微信
回复
6天前
相关问题
应用沙箱图片保存到图库
1117浏览 • 1回复 待解决
如何将像素点保存到图片文件
2296浏览 • 1回复 待解决
有谁知道如何将图片保存到相册
988浏览 • 1回复 待解决
如何将Pixmap保存到本地文件?
467浏览 • 1回复 待解决
HarmonyOS如何将PixelMap保存到相册?
552浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
5571浏览 • 1回复 待解决
如何将一段文字保存到剪切板
313浏览 • 1回复 待解决
rawfilezip复制并解压到沙箱路径
1357浏览 • 1回复 待解决
ets如何将图片转为byte[]?
3228浏览 • 1回复 待解决
如何图片和文案结合,保存到相册
204浏览 • 0回复 待解决