小程序保存图片
  4Sc2EobNVfno 2023年11月02日 44 0

(1). 提示: "saveImageToPhotosAlbum: fail not absolute path":

  • 不能保存网络图片,不支持网络图片路径,可以是临时文件路径或永久文件路径
  • 解决方案: a. 使用getImageInfo去下载图片,而且还需要https b. 主要是缓存在本地的时,会保存下一个临时文件 c. 再去使用这个方式去保存到本地的相册

2.授权:

(1). 逻辑分析:

  • 查看用户申请过的权限中是否有"保存图片到相册": wx.getSetting(Object object) a. 获取用户的当前设置 b. 返回值中只会出现小程序已经向用户请求过的权限 c. 如果接口调用回调函数返回成功,可以查看返回值中是否有"scope.writePhotosAlbum",有表示申请过了,没有则申请权限
  • 如果没有权限,需要先申请权限(弹窗授权): wx.authorize(Object object) a. 向用户发起授权请求: (1). 调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据(但不会实际调用对应接口) (2). 如果用户之前已经同意授权,则不会出现弹窗,直接返回成功 b. 如果用户同意授权则保存图片 c. 如果用户不同意,则跳转到设置页,重新授权,再保存图片

(2). 代码:

const save = () => {
  Taro.showToast({
    title:'正在保存图片',
    icon:'loading'
  })
  // 判断用户是否授权"保存到相册"
  wx.getSetting({
      success: (res) => {
      // 没有授权,发起授权
      if (!res.authSetting['scope.writePhotosAlbum']) {
        wx.authorize({
          scope:'scope.writePhotosAlbum',
          success: () => {
            // 保存图片
            savePhoto()
          },
          fail: () => {
            // 用户点击拒绝授权,跳转到设置页,引导用户授权
            wx.openSetting({
              success: () => {
                wx.authorize({
                  scope:'scope.writePhotosAlbum',
                  success: () => {
                    // 保存图片
                    savePhoto()
                  }
                })
              }
            })
          }
        })
      }else{
        //如果用户已授权,直接保存到相册
        savePhoto()
      }
    }
  })
}

// 方案一:下载图片
const savePhoto=()=>{
  wx.downloadFile({
    url,
    success:(res)=>{
        wx.saveImageToPhotosAlbum({
          filePath:res.tempFilePath,
          success:(res)=>{
            Taro.showToast({
              title:'保存成功',
              icon:'success'
            })
          }
        })    
    }
  })  
}

// 方案二:读取图片资源
Taro.getImageInfo({
  src: imgUrl,
  success(res) {
    saveImageToPhotosAlbum(res.path)
  },
  fail() {
    Taro.showToast({
      title: '获取网络图片资源失败',
      icon: 'none',
      duration: 2000
    })
  }
})
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
4Sc2EobNVfno
作者其他文章 更多