小程序canvas绘制微信头像

微信小程序canvas是不支持绘制网络图片的,所以逻辑就是先下载到本地,使用本地临时路径去绘制:

 



   // 查看是否授权
    wx.getSetting({
      success(res) {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success(resInfo) {
              wx.downloadFile({
                url: resInfo.userInfo.avatarUrl, 
                success(downloadRes) {
                  if (downloadRes.statusCode === 200) {
                    that.setData({
                      userIcon: downloadRes.tempFilePath
                    })
                    that.onDrawResultInfoForIos();
                  }
                }
              })
            }
          })
        } else {
          that.setData({
            userIcon:'../../../images/qr_code.png'
          })
          that.onDrawResultInfoForIos();
        }
      }
    })
  },
  
  
   <canvas style="margin-top:80rpx;width:{{windowWidth/10*9}}px;height:{{windowHeight/10*9}}px;  image-rendering: pixelated" canvas-id="qrResultCanvas" bindlongtap="saveCanvasImage"></canvas>
  
    /**
   * 绘制结果内容,ios平台
   */
  onDrawResultInfoForIos() {
    let that = this;

    let paddingWidth = 20;

    // 使用 wx.createContext 获取绘图上下文 context
    const context = wx.createCanvasContext('qrResultCanvas')

	//绘制圆形头像
    context.save();
    context.beginPath();
    // 圆的圆心的 x 坐标和 y 坐标,25 是半径,后面的两个参数就是起始和结束,这样就能画好一个圆了
    context.arc(paddingWidth + 25, paddingWidth + 25, 25, 0, 2 * Math.PI);
    context.closePath();
    // 下面就裁剪出一个圆形了,且坐标在 (paddingWidth + 25, paddingWidth + 25)
    context.clip();



    context.drawImage(that.data.userIcon, paddingWidth, paddingWidth, 50, 50);


    context.restore();
	
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漠天515

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

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

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

打赏作者

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

抵扣说明:

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

余额充值