nodejs 获取微信小程序二维码

 getQRCode(accessToken) {
    const { ctx } = this;
    let parameters;
    let url = `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${accessToken}`;
    await axios({
      method: "post",
      url: url,
      responseEncoding: "base64", //重点
      data: {
        page: "pages/index/startPage/startPage",
        scene: "codeType=CREATED",
      },
    }).then((res) => {
      if (res.data.length>100) {
        parameters = "data:image/png;base64," + res.data;
      } else {
        ctx.throw(500,'获取二维码失败')
      }
    }).catch(err=>{
        ctx.throw(500,'获取二维码失败')
    })

    return parameters;
  }

作者:用户899272282202
链接:https://juejin.cn/post/7246255609254346811
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在使用nodejs获取微信小程序二维码的时候 总是无法转换为base64格式 原来是因为 node服务端 responseEncoding 有默认的格式 需要指定才行 搞了半天 哎 

chatgpt对话小程序 扫码体验 ai对话 ai画图 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个基于微信小程序的生成二维码的代码示例: WXML代码: ``` <view class="container"> <canvas canvas-id="qrcode"></canvas> </view> ``` JS代码: ``` Page({ data: { qrcode: '' }, onLoad: function() { this.createQRCode('https://www.example.com'); }, createQRCode: function(url) { var that = this; wx.request({ url: 'https://api.weixin.qq.com/wxa/getwxacode', method: 'POST', responseType: 'arraybuffer', data: { path: url, width: 280 }, success: function(res) { var base64 = wx.arrayBufferToBase64(res.data); var qrcode = 'data:image/png;base64,' + base64; that.setData({ qrcode: qrcode }, function() { that.drawQRCode(); }) } }) }, drawQRCode: function() { var that = this; var qrcode = this.data.qrcode; wx.createSelectorQuery().select('#qrcode').fields({ node: true, size: true }).exec(function(res) { var canvas = res[0].node; var ctx = canvas.getContext('2d'); var dpr = wx.getSystemInfoSync().pixelRatio; canvas.width = res[0].width * dpr; canvas.height = res[0].height * dpr; ctx.scale(dpr, dpr); wx.getImageInfo({ src: qrcode, success: function(res) { var r = 0, g = 0, b = 0; for (var i = 0; i < res.width; i++) { for (var j = 0; j < res.height; j++) { var imgData = ctx.getImageData(i * 2, j * 2, 1, 1).data; r += imgData[0]; g += imgData[1]; b += imgData[2]; } } var count = res.width * res.height; r = Math.round(r / count); g = Math.round(g / count); b = Math.round(b / count); var color = 'rgb(' + r + ',' + g + ',' + b + ')'; ctx.fillStyle = color; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.drawImage(qrcode, 20, 20, canvas.width - 40, canvas.height - 40); wx.canvasToTempFilePath({ canvas: canvas, success: function(res) { var qrcode = res.tempFilePath; that.setData({ qrcode: qrcode }) } }) } }) }) } }) ``` 上述代码会在页面中创建一个名为“qrcode”的canvas元素,并在页面加载时调用createQRCode方法生成二维码。createQRCode方法会使用wx.request方法向微信服务器请求生成二维码图片,并将返回的二进制数据转换为base64格式,最后调用drawQRCode方法将base64格式的图片绘制到canvas上,并转换为临时文件路径。drawQRCode方法会使用wx.createSelectorQuery方法获取canvas的宽度和高度,并调用wx.getImageInfo方法获取二维码图片的平均颜色,然后将平均颜色绘制到canvas背景上,并绘制二维码图片。最后调用wx.canvasToTempFilePath方法将canvas转换为临时文件路径,并将路径更新到页面数据中,这样就可以在页面中显示生成的二维码图片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值