uniapp如何保存图片到相册

在uniapp中如何将图片保存到手机相册?我尝试了uni.saveImageToPhotosAlbum方法,但总是提示保存失败,不知道是不是需要先获取权限?另外保存网络图片和本地图片的路径写法有什么区别?求一个完整的代码示例。

2 回复

使用uni.saveImageToPhotosAlbum方法,传入图片路径即可保存到相册。注意需要先获取相册权限,否则会失败。


在 UniApp 中,保存图片到相册可以通过 uni.saveImageToPhotosAlbum API 实现。以下是详细步骤和注意事项:

代码示例

// 保存网络图片或本地图片到相册
uni.saveImageToPhotosAlbum({
  filePath: '图片路径(支持本地临时路径或网络URL)',
  success: () => {
    uni.showToast({ title: '保存成功', icon: 'success' });
  },
  fail: (err) => {
    uni.showToast({ title: '保存失败', icon: 'none' });
    console.error('保存失败:', err);
  }
});

关键说明

  1. 权限处理(仅Android需要):

    • 调用前需动态申请存储权限(API 23+),可通过 uni.authorize 提前授权:
    uni.authorize({
      scope: 'scope.writePhotosAlbum',
      success: () => { /* 授权成功后执行保存 */ }
    });
    
  2. 路径要求

    • 网络图片需先通过 uni.downloadFile 下载到本地临时路径:
    uni.downloadFile({
      url: 'https://example.com/image.jpg',
      success: (res) => {
        if (res.statusCode === 200) {
          uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath });
        }
      }
    });
    
  3. 用户拒绝处理

    • 若用户首次拒绝授权,可引导至设置页手动开启:
    uni.openSetting({
      success: (res) => {
        if (res.authSetting['scope.writePhotosAlbum']) {
          // 重新执行保存操作
        }
      }
    });
    

注意事项

  • iOS无需权限申请,但需在 manifest.json 中配置相册使用描述。
  • 部分安卓机型可能因系统差异需要额外处理路径或权限。

通过以上方法即可实现图片保存功能,建议在实际调用前做好路径验证和错误处理。

回到顶部