HarmonyOS 鸿蒙Next如何从相册里选择图片作为头像并保存路径以便下次打开时还能显示

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

HarmonyOS 鸿蒙Next如何从相册里选择图片作为头像并保存路径以便下次打开时还能显示 通过PhotoViewPicker从相册里选择图片作为头像后,将路径保存到preferences里,但是下次重新进入页面后从prefeneces里取出路径后,Image却不显示图片,请求。

2 回复

需要将选择的图片uri保存到沙盒路径中保存使用。

choosePhoto() {
  const photoSelectOptions = new picker.PhotoSelectOptions();
  photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
  photoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
  let uris: Array<string> = [];
  const photoViewPicker = new picker.PhotoViewPicker();
  photoViewPicker.select(photoSelectOptions).then(async (photoSelectResult: picker.PhotoSelectResult) => {
    uris = photoSelectResult.photoUris;
    console.info('photoViewPicker.select to file succeed and uris are:' + uris);

    let context = getContext(this) as common.UIAbilityContext;
    let resFile = fs.openSync(uris[0], fs.OpenMode.READ_ONLY)
    const dateStr = (new Date().getTime()).toString()
    // 临时文件目录
    let newPath = context.cacheDir + `/${dateStr + resFile.name}`;
    // 转化路径
    fs.copyFileSync(resFile.fd, newPath);
    // 新的路径
    let realUri = 'file://' + newPath;
    //保存路径使用
    this.avatarUri = realUri;

  }).catch((err: BusinessError) => {
    console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
  })
}

更多关于HarmonyOS 鸿蒙Next如何从相册里选择图片作为头像并保存路径以便下次打开时还能显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若要从相册选择图片作为头像并保存其路径以便下次打开时能够显示,可以通过以下步骤实现:

  1. 打开相册选择界面: 使用鸿蒙系统提供的文件选择器API或相册访问权限,打开系统的相册选择界面,让用户从中选择一张图片。

  2. 获取图片路径: 用户在相册中选择图片后,系统会返回该图片的URI(统一资源标识符)。通过该URI,你可以进一步获取图片在设备上的实际路径。注意,这里可能需要处理不同存储位置(如内部存储或外部存储)的情况。

  3. 保存图片路径: 获取到图片路径后,可以将该路径保存到应用的本地数据库、SharedPreferences或其他持久化存储中,以便下次应用启动时能够读取。

  4. 显示头像: 下次打开应用时,从之前保存的存储位置读取图片路径,并使用ImageView或其他图像显示组件将图片展示出来。

请注意,处理图片路径时,应确保应用具有相应的文件访问权限,并妥善处理可能的安全问题,如路径伪造或文件不存在的情况。

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

回到顶部