HarmonyOS 拍照后保存为头像,终止app进程后再次进入,头像无法显示?

设置头像后,再次进入app无法显示。

async choose(){
  try {
    // 设置图片选择器选项
    const photoSelectOptions = new picker.PhotoSelectOptions();
    // 限制只能选择一张图片
    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
    photoSelectOptions.maxSelectNumber = 10;
    // 创建并实例化图片选择器
    const photoViewPicker = new picker.PhotoViewPicker();
    // 选择图片并获取图片URI
    let uris: picker.PhotoSelectResult = await photoViewPicker.select(photoSelectOptions);
    if (!uris || uris.photoUris.length === 0) return;
    console.info('123123uris', JSON.stringify(uris))
    // 获取选中图片的第一张URI
    this.uri = uris.photoUris[0];
  } catch (error) {
    let err: BusinessError = error as BusinessError;
    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
  }
}
阅读 495
1 个回答

需要将选择的图片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}`);
  })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进