HarmonyOS 鸿蒙Next 获取到相册里图片的uri后如何读取

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 获取到相册里图片的uri后如何读取


使用 picker.PhotoViewPicker() 发起图片选择,在获取到图片Uri后,如何去读取这个图片?

需要实现一个选择用户图片并且上传到服务器的功能,方法是
通过 picker.PhotoViewPicker() 获取了图片,这一步操作成功,获取的uri 为 file://media/Photo/2/xxx.jpg
使用fs的open去读取,报错 13900002 文件不存在
然后又用了 fileUri.FileUri 尝试获取路径依然不起作用一样的说文件不存在
fs.access方法也说是不存在

那到底如何正确的去读取这个文件图片?


更多关于HarmonyOS 鸿蒙Next 获取到相册里图片的uri后如何读取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
fs仅能访问应用内的沙箱路径,公共目录下的文件访问需要通过媒体库进行访问,同时使用媒体库需要申请权限:ohos.permission.READ_MEDIA 或者 ohos.permission.WRITE_MEDIA。参考链接:对所有应用开放-应用权限列表-应用权限管控-程序访问控制-安全-系统 - 华为HarmonyOS开发者

更多关于HarmonyOS 鸿蒙Next 获取到相册里图片的uri后如何读取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,获取到相册里图片的URI后,可以通过以下步骤读取图片数据:

  1. URI解析:首先,利用系统提供的URI解析工具,从URI中提取出图片的路径或文件标识符。

  2. 权限检查:确保应用已获得读取相册的权限。在鸿蒙系统中,这通常需要在manifest文件中声明相关权限,并在运行时进行权限请求。

  3. MediaStore访问:通过MediaStore API,利用URI查询图片的具体信息,如MIME类型、大小等。

  4. 文件访问:如果URI指向的是一个文件路径,可以直接使用文件I/O操作读取图片数据。如果URI指向的是内容URI,则需要使用ContentResolver来获取图片的输入流。

  5. BitmapFactory解码:将输入流传递给BitmapFactory,进行图片解码,得到Bitmap对象,即可在应用中展示或处理图片。

示例代码片段(简化版,省略了权限检查和错误处理):

Uri uri = ...; // 获取到的图片URI
ContentResolver resolver = getContentResolver();
InputStream inputStream = resolver.openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();

注意:上述代码是基于Android的示例,鸿蒙系统在具体API上可能有所不同,但总体思路一致。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部