微信小程序保存图片到相册(先授权,再保存)

小程序保存图片是一个常用功能,这里来记录一下实现的过程。

首先最新的小程序基础库发布之后不再支持不是由button发起的openSetting了,具体可查看(https://developers.weixin.qq.com/community/develop/doc/000cea2305cc5047af5733de751008),所以需要借助button组件的微信开放能力来调起。

在保存图片到相册的时候,是需要授权的,这个时候,需要先检测下是否授权,没有则进行授权验证,通过后则执行保存办法。如果拒绝授权,则要增加一个透明的按钮来打开设置页面,以下为实现功能的核心代码。

wxml文件:

<image src="/images/invite_xuanchuan.png" mode="heightFix" />
<button class="saveModel-btn" bindtap="saveCard">保存到手机相册</button>
<button class="getSet" hidden="{{isGetSet}}" open-type="openSetting"></button>

js文件:

data: {
    isGetSet: true
},
saveImage (filePath) {
    wx.saveImageToPhotosAlbum({
      filePath: "/images/invite_xuanchuan.png",
      success: (res) => {
        console.log(res)
        this.showToast('保存成功')
      },
      fail: (err) => {
        console.log(err)
        this.showToast('保存失败')
      }
    })
},

// 微信提示方法
showToast (title) {
    wx.showToast({
      title: title
    });
},

saveImageToPhotos (filePath) {
    let self = this
    // 相册授权
    wx.getSetting({
      success(res) {
        // 进行授权检测,未授权则进行弹层授权
        console.log(res.authSetting)
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success () {
              self.saveImage(filePath)
              self.setData({
                isGetSet: true
              })
            },
            // 拒绝授权时,在下载按钮上面增加打开手机设置按钮
            fail() {
              console.log('拒绝授权')
              self.setData({
                isGetSet: false
              })
            }
          })
        } else {
          // 已授权则直接进行保存图片
          self.setData({
            isGetSet: true
          })
          self.saveImage(filePath)
        }
      },
      fail(res) {
        console.log(res);
      }
    })
},
// 按钮点击触发
saveCard (res) {
    this.saveImageToPhotos(res)
},
onShow: function () {
    var that = this;
    wx.getSetting({
      success(res) {
        //由设置页面回到当前页面,需进行重新授权检测
        if (res.authSetting['scope.writePhotosAlbum']) {
          console.log('已重新授权')
          that.setData({
            isGetSet: true
          })
        }
      }
    })
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inticaler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值