微信小程序和支付宝小程序生成二维码

描述:前端生成二维码

一、页面
<canvas type="2d" style="width: 312px; height: 312px;" id="myQrcode"></canvas>
二、微信小程序

安装 weapp-qrcode-canvas-2d
官方文档传送门

const query = wx.createSelectorQuery()
query.select(canvasId)
  .fields({
    node: true,
    size: true
  })
  .exec((res) => {
    const canvas = res[0].node

    // 调用方法drawQrcode生成二维码
    drawQrcode({
      canvas: canvas,
      canvasId,
      width,
      padding: 0, // 码的白边
      background: '#ffffff',
      foreground: '#000000',
      text: '这里是二维码上的内容',
    }).then(res => {
      wx.canvasToTempFilePath({
        canvasId,
        canvas: canvas,
        x: 0,
        y: 0,
        width,
        height,
        destWidth: width,
        destHeight: height,
        success(res) {
          console.log('二维码临时路径:', res.tempFilePath)
        },
        fail(err) {
          console.error(err)
        }
      })
    })
  })
三、支付宝小程序
my.generateImageFromCode ({
   code: '这里是二维码上的内容',
   format: 'QRCODE',
   width,
   correctLevel: 'H',
   codeColor: '#e70b0b',
   backgroundColor: '#ffffff',
   success: function (res) {
     console.log('二维码临时路径:', res.image) // 这里是base64
   },
   fail: function (err) {
     console.log (err)
   }
 })
四、注意:

1、画出的二维码大小如果跟设计稿的一样,需要各种计算,为了方便,我这里是直接用的image显示的路径,然后设置image的样式

2、支付宝生成的是base64

3、ios微信小程序报错 (in promise) MiniProgramError
{“errMsg”:“canvasToTempFilePath:fail image size is 0x0”}
Object
解决:发现是canvas写了display: none

4、如果需要隐藏canvas, 不能用display:none, 也不能用transform(会占位), 我用的是fixed

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Misha韩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值