微信小程序学习:生成带小程序码的海报。

还不了解canvas的可以先查看小程序api:

https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html

一、布局(基础学习)

1、在布局文件wxml创建canvas

<view><canvas style="width:750px;height: 1128px;background:#f1f1f1;" canvas-id="qrcCanvas"/></view>

2、在JS文件获取canvasContext

const ctx = wx.createCanvasContext('qrcCanvas')

3、简单的绘制

1.绘制矩形

ctx.fillRect(x, y, width,height);

参数依次是 矩形x坐标、y坐标、图片宽、高

2.绘制图片

ctx.drawImage(src, x, y,width,height)

参数依次是图片地址、x坐标、y坐标、图片宽、高

3.绘制文字

ctx.fillText(text, x, y, maxWidth)

参数依次是文本内容、x坐标、y坐标、需要绘制的最大宽度

获取小程序码小程序api:

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

二、生成带小程序码的海报。

1、小程序码的获取一般是放在后台去做,前端思路:

1)通过接口向服务端获取海报背景图片和小程序码;

调用接口获取到海报背景图片和小程序码对应的图片连接,然后通过wx.getImageInfo获取图片连接对应的本地路径。

    wx.getImageInfo({
      src: that.data.posterURL,//服务器返回的图片地址
      success: function (res) {
        
        let qrCodePath = res.path;
        
      },
      fail: function (res) {
      },
      complete: function(res){
        wx.hideLoading()
      }
    });

2)将获取到的两张图片合并成一张海报;

          //画布上下文本
          const ctx = wx.createCanvasContext('qrcCanvas')
          // 绘制底图
          ctx.drawImage(bgPath ,0, 0, 750, 1128)
          // 绘制小程序码
          var qrImgSize = 150, iMoveY = 828;
          ctx.drawImage(qrCodePath, (750 - qrImgSize) / 2, iMoveY, qrImgSize, qrImgSize)
          ctx.stroke()
          ctx.draw()

3)保存海报到手机本地。

wx.canvasToTempFilePath({
      //通过id 指定是哪个canvas
      canvasId: that.data.canvasId,
      success(res) {
        //成功之后保存到本地
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: function (res) {
            wx.showToast({
              title: '保存成功',
              icon: 'success',
              duration: 2000
            })
          },
          fail: function (res) {
            console.log(res)
            if (res.errMsg =="saveImageToPhotosAlbum:fail auth deny"||res.errMsg === "saveImageToPhotosAlbum:fail:auth denied") {
              console.log("打开设置窗口");
              wx.openSetting({
                success(settingdata) {
                  console.log(settingdata)
                  if (settingdata.authSetting["scope.writePhotosAlbum"]) {
                    console.log("获取权限成功,再次点击图片保存到相册")
                    //关闭海报显示框
                    that.setData({
                      posterIsShow: false
                    })
                  } else {
                    console.log("获取权限失败")
                  }
                },
                fail: function(res) {
                  console.log(res)
                }
              })
            }
          }
        })
      },
      complete: function() {
        wx.hideToast();
      }
    })

最终效果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sziitjin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值