原生小程序生成二维码并保存到本地

需求:我要在一个页面中生成一个二维码,并且这个二维码可以长按保存到本地或者发送给好友;

我这里是将生成的canvas二维码转换成图片,利用长按图片进行保存或转发

效果图:

第一步先下载对应的包:

javascript 复制代码
npm install weapp-qrcode --save

第二步: wxml

我们需要准备一个生成二维码的canvas

javascript 复制代码
<canvas class="pf canvas" style="width:260rpx;height:260rpx;" canvas-id="myQrcode" id="myQrcode"></canvas>

canvas-id="myQrcode" 这个id是生成二维码的时候需要

id="myQrcode" 这个id是转换图片的时候需要

还需要一个存放图片的image (图片的位置自定义)

html 复制代码
<image show-menu-by-longpress="true" src="{{qrcodeUrl}}" mode="aspectFit"></image>

show-menu-by-longpress="true" 必须存在

第三步:JS

先导入weapp-qrcode包

javascript 复制代码
import drawQrcode from 'weapp-qrcode'

data中定义需要用到的变量

javascript 复制代码
data: {
    showCodeFn:false,
    qrcodeUrl:''
  },

开始生成二维码

javascript 复制代码
onLoad(options) {
var that = this
drawQrcode({
      width:130,
      height:130,
      canvasId: 'myQrcode',
      text: config.temporaryUrl+'wechat/unit/'+options.unitId,
      callback:function(e){
        //我这里判断如果二维码生成成功就调用转换图片的方法,万一在没生成二维码之前,用户点击了图片的,报错或者看不见就尴尬了
        that.drawImg()
      }
    })
 },

至于需要在哪个生命周期函数中生成二维码,自己定

将二维码转换成图片的方法

javascript 复制代码
drawImg(){
    var that = this
    // 创建一个选择器查询对象
    const query = wx.createSelectorQuery();
    // 执行查询并获取 canvas 节点的实例
    query.select('#myQrcode').boundingClientRect()
    // 查询结束后执行回调函数
    query.exec((res) => {
      if (res[0]) {
        // res[0] 是 canvas 节点信息,确保节点存在
        wx.canvasToTempFilePath({
          canvasId: 'myQrcode',
          success(res) {
            that.setData({
//因为的的需求是点击某个地方,才让图片显示,所以在没生成图片之前,先把需要点击的那个地方隐藏了,等生成图片成功后,再放出来,所以这里是控制那个点击地方的显示/隐藏
              showCodeFn:true
            })
            console.log('查询成功')
            const tempFilePath = res.tempFilePath;
            console.log(tempFilePath);
            that.setData({
//这是图片地址
              qrcodeUrl: tempFilePath
            })
          },
          fail(err) {
            console.error( err);
          }
        });
      } else {
        console.error('未能找到对应的 canvas 节点');
      }
    });
  },

完成 ✿✿ヽ(°▽°)ノ✿

相关推荐
weixin_177297220693 小时前
剧本杀APP系统开发:打造多元化娱乐生态的先锋力量
小程序·娱乐·剧本杀
weixin_177297220693 小时前
扭蛋机小程序系统开发:连接线上线下娱乐的新桥梁
小程序·娱乐·扭蛋机·盲盒
毕设源码-赖学姐5 小时前
【开题答辩全过程】以 交通管理乱停车小程序的设计与实现为例,包含答辩的问题和答案
小程序
说私域5 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销创新研究——以“种草”实践践行“以人为本”理念
人工智能·小程序
说私域5 小时前
电商栏目细分与定制开发开源AI智能名片S2B2C商城小程序:洞察力与执行力的协同共进
人工智能·小程序
码海扬帆:前端探索之旅5 小时前
小程序开发指南(四)(UI 框架整合)
ui·微信小程序·小程序
lumi.7 小时前
Swiper属性全解析:快速掌握滑块视图核心配置!(2.3补充细节,详细文档在uniapp官网)
前端·javascript·css·小程序·uni-app
低代码布道师8 小时前
少儿舞蹈小程序需求规格说明书
低代码·小程序·规格说明书
浩星13 小时前
react+taro打包到不同小程序
react.js·小程序·taro
diygwcom1 天前
AI实现超级客户端打印 支持APP 网页 小程序 调用本地客户端打印
小程序