HarmonyOS如何获取手机本地图片

有个需求是获取手机的本地图片,发送出去。从沙盒中获取一个图片本地路径,然后进行发送。这边做过的尝试如下:

1. 通过 DevEco-Studio 的 DeviceFile Browser 找到了 app 的 el1 和 el2 包路径,往里面上传图片的话报错没有权限。

2. 往代码工程的 rawfile 目录中塞图片,但是无法知道 rawfile 的本地路径。

HarmonyOS
2024-09-09 11:17:52
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

1、el2文件沙箱目录可以通过下载文件接口下载至此目录。文件路径为getContext(this).filesDir + ‘/’ + {文件名}。

2、rawfile目录文件可以通过resourceManager…getRawFd()接口获取。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5#getrawfd9

3、相册图片可以通过picker方式获取参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/select-user-file-V5#选择图片或视频类文件

目前resourcemanager拿到的fd不支持copyfile(所有rawfile被压缩在一块), 得用fs.read接口指定offset和length去读出来,然后再从buffer把东西写进最终文件。可以参考如下实现:

getContext().resourceManager.getRawFileContent('1.png', (_err, value) => { 
  let myBuffer: ArrayBufferLike = value.buffer 
  let filePath = getContext().filesDir + "1.png"; 
  console.log("testTag-filePath:" + filePath); 
  let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
  let writeLen = fs.writeSync(file.fd, myBuffer); 
  console.info("testTag-write data to file succeed and size is:" + writeLen); 
  fs.closeSync(file); 
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
分享
微博
QQ
微信
回复
2024-09-09 17:04:43
相关问题
如何获取手机本地图片
1049浏览 • 1回复 待解决
HarmonyOS 如何压缩本地图片
838浏览 • 1回复 待解决
HarmonyOS 如何上传本地图片
831浏览 • 1回复 待解决
HarmonyOS customScan 如何扫描本地图片
696浏览 • 1回复 待解决
HarmonyOS Image加载本地图片咨询
1317浏览 • 1回复 待解决
HarmonyOS Image展示本地图片失败
1186浏览 • 1回复 待解决
ArkUI(eTS)如何实现本地图片保存?
8251浏览 • 1回复 待解决
如何保存本地图片到相册中
2184浏览 • 1回复 待解决
HarmonyOS 卡片使用本地图片作为背景
600浏览 • 1回复 待解决
服务卡片设置本地图片显示空白
8412浏览 • 2回复 已解决
HarmonyOS 本地图库选择器并编辑图片
754浏览 • 1回复 待解决
识别本地图片的方法有哪些?
1150浏览 • 1回复 待解决