微信小程序base64实现小程序码

大家好,今天在做小程序时有一个推广的小程序二维码,下面我们来看看是如何制作的。

这个base64码是后台接口获取到的,所以要先将数据获取到,获取到数据后有些朋友不知道该怎么用到方法里,在方法内部获取不到base64码。

代码如下:

wxml

<canvas type="2d" id="myCanvas" style="width: 100%;height: 100vh;border-radius: 5px;" bindlongtap="save"></canvas>

js

Page({
  data: {
    code: ""
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let that = this;
    let userid = getApp().globalData.userid;
    
  },

  onReady() {
    let base=this.data
    console.log(base);
    const query = wx.createSelectorQuery()
    query.select('#myCanvas')
      .fields({ node: true, size: true })
      .exec((res) => {
        const canvas = res[0].node
        const ctx = canvas.getContext('2d')
        const dpr = wx.getSystemInfoSync().pixelRatio
        canvas.width = res[0].width * dpr     // 获取宽
        canvas.height = res[0].height * dpr  // 获取高
        ctx.scale(dpr, dpr)
        wx.request({
          url: ',  //这里是你的接口
          data: {
            
          },
          method: 'POST',
          success: res=> {
            console.log(res);
           var code = res.data;
           let image = canvas.createImage();//创建iamge实例
        image.src = 'https://pic.imgdb.cn/item/63be1365be43e0d30e0e8540.jpg';  // 引入图片
        image.onload = function () {
          ctx.drawImage(image, 0, 0, 375, 610); // 背景图
 
          // 绘制base64图片
          //声明文件系统
          const fs = wx.getFileSystemManager();
          var times = new Date().getTime();
          var codeimg = wx.env.USER_DATA_PATH + '/' + times + '.png';
          //将base64图片写入
          fs.writeFile({
            filePath: codeimg,
            data: code.slice(22),  // code就是接口返回的base64数据(分割掉前面的data:image/png;base64,)
            encoding: 'base64',
            success: () => {
              console.log(codeimg);
              wx.createSelectorQuery().select('#myCanvas').fields({ node: true, size: true })
                .exec((res) => {
                  let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
                  let canvas = res[0].node;
                  const bg = canvas.createImage();
                  bg.src = codeimg;
                  bg.onload = function () {
                    ctx.drawImage(bg, 85, 300, 210, 210);
                  }
                })
            }
          });
 
        }
          }
        });
        
        // 到这里就可以直接绘制
         
      })
  },
});

以上就是本章的全部内容了,感谢您的阅读,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

萝卜头不吃萝卜头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值