HarmonyOS 鸿蒙Next App获取相册图片的问题

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

HarmonyOS 鸿蒙Next App获取相册图片的问题

系统相册中图片资源获取问题 App需要选取相册中某些照片,在选取后会显示原图在Image组件,同时经过相应处理后显示在另外一张Image组件,在App重启后需要自动加载此图片,需要在UI显示。 选取图片我用的是photoAccessHelper。PhotoViewPicker,在测试后发现,如果用Picker返回的路径,在App可以加载图片,但无法读取图片数据,App重启后无法加载图片,也无法处理,所以用getAssest和photoAccessHelper.MediaAssetManager.requestImageData,保存图片到沙箱,此时App可以读取处理,但是沙箱路径Image组件无法加载  请问该如何满足我的需求,就是选取图片后,无论何时App都可以加载此图片,并且App可以读取图片数据进行处理


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

2 回复

使用Image组件,展示沙箱路径图片,需要得到文件沙箱路径后, 调用[@ohos](/user/ohos).file.fileuri模块的fileuri.getUriFromPath(file.path)将沙箱路径转化为沙箱uri, 传入之后即可正常显示,见如下demo:

import fileUri from '[@ohos](/user/ohos).file.fileuri';
import common from '[@ohos](/user/ohos).app.ability.common';
import fs from '[@ohos](/user/ohos).file.fs';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) message: string = 'Hello World';
 [@State](/user/State) uri: string = ""
 build() {
   Row() {
     Column() {
       Text(this.message)
         .fontSize(50)
         .fontWeight(FontWeight.Bold)
         .onClick(() => {
           let context = getContext(this) as common.UIAbilityContext
           let filePath = context.filesDir + "/test.png"
           let arrayBuff = context.resourceManager.getRawFileContentSync("icon.png").buffer
           console.log('testTag-----',arrayBuff)
           let file = fs.openSync(filePath,fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
           fs.writeSync(file.fd,arrayBuff)
           this.uri = fileUri.getUriFromPath(filePath)
           console.log('testTag-----',filePath)
         })
       Image(this.uri)
         .width(100)
         .height(100)
     }
     .width('100%')
   }
   .height('100%')
 }
}

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


针对HarmonyOS 鸿蒙Next App获取相册图片的问题,以下是一些关键信息和解决方案:

在HarmonyOS鸿蒙Next系统中,应用获取相册图片需要遵循系统的权限管理和数据存储规范。首先,应用需要在manifest.json文件中声明访问存储的权限,如ohos.permission.READ_MEDIA。然而,对于直接写入相册的权限ohos.permission.WRITE_IMAGEVIDEO,其使用场景受限,目前仅允许克隆类和云盘类应用获取全量媒体库访问权限,其他类型应用需通过Pickers来访问用户指定的图片或视频。

为了获取相册图片,建议使用鸿蒙系统提供的PhotoViewPicker组件。该组件允许应用拉起系统预置的文件选择器,用户可以在选择器上选择图片,应用即可获取到选择结果的URI。随后,应用可以使用这些URI来读取和展示图片。

如果应用需要保存图片到相册,目前推荐通过SaveButton安全控件实现。请注意,这些方法可能随着鸿蒙系统的更新而有所变化,建议查阅最新的鸿蒙开发文档以确保代码兼容性。

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

回到顶部