HarmonyOS 保存图片文件异常

按如下代码,测试保存图片文件到相册功能,图片文件保存到相册后,为空图像,没有任何内容;代码如下所示:

let path: string = FileUtils.getInstance().getFileDir() + '/test.jpg'; 
let descriptor: resourceManager.RawFileDescriptor = getContext(this).resourceManager.getRawFdSync('test.jpg'); 
fs.copyFileSync(descriptor.fd, path); 
console.log('copy file success'); 
 
console.log(`file path" ${path}`) 
if (!fs.accessSync(path)) { 
  console.error(`当前图片不存在, 图片路径 ${path}`); 
  return; 
} 
let res: number = await AlbumsUtils.getInstance().requireWritePermissionFromUser(); 
if (res === 0) { 
  // 授权成功 
  AlbumsUtils.getInstance().savePhotoToAlbums(path, 'jpg'); 
} 
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

​其中,保存文件到相册的功能代码,详见附件。

test.jpg 在 rawfile 下,并将其 copy 到沙箱文件路径下,沙箱文件路。径:/data/storage/el2/base/haps/entry/files/test.jpg

addResource 输入参数 fileUri 为: file://com.example.kdforharmonyos/data/storage/el2/base/haps/entry/files/test.jpg

同时,现有条件下,无法确定复制到沙箱中的图片文件是正确的,请告知如何将文件正确地从 rawfile 下复制到沙箱路径中,或直接将 rawfile 下的文件保存到相册中。

HarmonyOS
2024-11-12 11:40:02
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

​保存到相册 先申请以下权限: ohos.permission.WRITE_IMAGEVIDEO 其中ohos.permission.WRITE_IMAGEVIDEO需要向用户申请授权,可参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/request-user-authorization-V5

示例代码:​

import abilityAccessCtrl, { Context, PermissionRequestResult } from '@ohos.abilityAccessCtrl'; 
import { BusinessError } from '@ohos.base'; 
import common from '@ohos.app.ability.common'; 
 
async saveClick() { 
  try { 
    let context: Context = getContext(this); 
 
    const resourceMgr: resourceManager.ResourceManager = context.resourceManager; 
    const fileData: Uint8Array = await resourceMgr.getRawFileContent('fish_bg.jpeg'); 
    const buffer = fileData.buffer; 
 
    let helper = photoAccessHelper.getPhotoAccessHelper(context); 
    let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpeg'); 
    let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
 
    await fs.write(file.fd, buffer); 
    await fs.close(file.fd); 
  } catch (e) { 
    console.log('error----', JSON.stringify(e)) 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
分享
微博
QQ
微信
回复
2024-11-12 16:56:42
相关问题
PixelMap怎么保存图片文件
1305浏览 • 1回复 待解决
HarmonyOS 图片保存
1017浏览 • 1回复 待解决
HarmonyOS 图片保存失败
873浏览 • 1回复 待解决
HarmonyOS 图片保存功能
844浏览 • 1回复 待解决
如何将像素点保存图片文件
3155浏览 • 1回复 待解决
HarmonyOS 上传图片异常
707浏览 • 1回复 待解决
HarmonyOS PDF文件保存
953浏览 • 1回复 待解决
HarmonyOS 图片保存到相册
815浏览 • 1回复 待解决
HarmonyOS 组件生成图片保存
818浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
1451浏览 • 1回复 待解决
HarmonyOS 图片exif信息获取异常
1294浏览 • 2回复 待解决
HarmonyOS 文件下载保存问题
1380浏览 • 1回复 待解决
HarmonyOS 保存图片到系统相册
977浏览 • 1回复 待解决
HarmonyOS SaveButton保存图片授权失败
910浏览 • 1回复 待解决
HarmonyOS 保存图片到本地相册
975浏览 • 1回复 待解决
HarmonyOS 保存图片到相册问题
1250浏览 • 1回复 待解决
HarmonyOS 图片保存到相册报错
1028浏览 • 1回复 待解决
HarmonyOS 实现保存图片到相册
1113浏览 • 1回复 待解决