微信小程序长按实现保存图片到手机相册


前言

今天上午刚写出来的,网上搜的资料,主要是微信小程序中有支付的功能,但是微信小程序只能扫描小程序的二维码,对其他类型的二维码不起作用,所以就改变了一下方案:长按图片保存到手机,然后通过手机扫描二维码实现支付

提示:以下是本篇文章正文内容,下面案例可供参考

实现方法


wxml文件:在需要的地方添加长按事件bindlongpress,通过data-url将图片路径传到长按事件中

//wxml
<image src="{{url}}" data-url="{{url}}" bindlongpress="saveImage"></image>

注意事项:
1、文档中有说明,调用wx.saveImageToPhotosAlbum之前需要用户授权scope.writePhotosAlbum,如图一
2、图片文件路径不支持网络路径(如图一),所以我们可以用支持网络路径的wx.getImageInfo(Object object)去获取图片的信息,并且它返回的图片路径是本地路径,这样就可以把返回的本地路径拿去给wx.saveImageToPhotosAlbum用(如图二)

图一:
在这里插入图片描述
图二:
在这里插入图片描述

下面,就是实现的代码了

Page({
  data: {
      url:"https://wechat.weixinzjit.com/costa/public/uploads/images/20190109/67b16149693920598435315fd0d5ab3e.jpg"
  },
  // 长按保存图片
  saveImg(e){
    let url = e.currentTarget.dataset.url;
    //用户需要授权
    wx.getSetting({
      success: (res) => {
        if (!res.authSetting['scope.writePhotosAlbum']) {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success:()=> {
              // 同意授权
              this.saveImg1(url);
            },
            fail: (res) =>{
              console.log(res);
            }
          })
        }else{
          // 已经授权了
          this.saveImg1(url);//用户授权后,调用saveImg()方法,进行图片的保存
        }
      },
      fail: (res) =>{
        console.log(res);
      }
    })   
  },
  saveImg1(url){
    wx.getImageInfo({
      src: url,
      success:(res)=> {
        let path = res.path;
        wx.saveImageToPhotosAlbum({
          filePath:path,
          success:(res)=> { 
            console.log(res);
          },
          fail:(res)=>{
            console.log(res);
          }
        })
      },
      fail:(res)=> {
        console.log(res);
      }
    })
  },
})

总结

以上,就是本篇博客要分享的所有内容了,如果对你有用,欢迎在下方点赞或评论,如果有大佬有更好的方法,欢迎评论区畅所欲言哟~

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值