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

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

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

效果图:

第一步先下载对应的包:

npm install weapp-qrcode --save

第二步: wxml

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

<canvas class="pf canvas" style="width:260rpx;height:260rpx;" canvas-id="myQrcode" id="myQrcode"></canvas>

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

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

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

<image show-menu-by-longpress="true" src="{{qrcodeUrl}}" mode="aspectFit"></image>

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

 第三步:JS

        先导入weapp-qrcode包


import drawQrcode from 'weapp-qrcode'

       data中定义需要用到的变量

data: {
    showCodeFn:false,
    qrcodeUrl:''
  },

        开始生成二维码 

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

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

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

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 节点');
      }
    });
  },

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

相关推荐

  1. uniapp程序---生成保存

    2024-07-11 05:34:05       57 阅读
  2. 前端vue2生成保存

    2024-07-11 05:34:05       51 阅读
  3. 微信程序保存的过程

    2024-07-11 05:34:05       59 阅读
  4. 微信程序生成海报分享

    2024-07-11 05:34:05       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 05:34:05       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 05:34:05       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 05:34:05       46 阅读
  4. Python语言-面向对象

    2024-07-11 05:34:05       56 阅读

热门阅读

  1. Elasticsearch 多索引/多类型搜索

    2024-07-11 05:34:05       19 阅读
  2. 【ElasticSearch】ES 5.6.15 向量插件支持

    2024-07-11 05:34:05       21 阅读
  3. netty udp创建服务端+客户端

    2024-07-11 05:34:05       20 阅读
  4. 用SmartSql从数据库表中导出文档

    2024-07-11 05:34:05       18 阅读
  5. 速盾:cdn 缓存图片

    2024-07-11 05:34:05       18 阅读
  6. 【seo常见的问题】搜索引擎

    2024-07-11 05:34:05       22 阅读
  7. D1.排序

    D1.排序

    2024-07-11 05:34:05      20 阅读
  8. Leetcode 1143. Longest Common Subsequence

    2024-07-11 05:34:05       22 阅读
  9. 从像素角度出发使用OpenCV检测图像是否为彩色

    2024-07-11 05:34:05       25 阅读
  10. ES索引模板

    2024-07-11 05:34:05       17 阅读
  11. ”极大似然估计“和”贝叶斯估计“思想对比

    2024-07-11 05:34:05       20 阅读