微信小程序实现canvas画圆形微信头像

1.需要获取用户信息,拿到用户头像图片

    wx.getUserProfile({
      desc: '用于生成海报', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        wx.downloadFile({
          url: res.userInfo.avatarUrl,
          success (res) {
            if (res.statusCode === 200) {
              this.setData({
                file_avatar:res.tempFilePath //拿到图片本地地址
              })
            }
          }
        })
      }
    })

2.实例化一个canvas对象,绘制出圆形并将头像固定到圆形中心位置

let ctx = wx.createCanvasContext('myCanvas', this)
this.circleAvatar(ctx, this.data.file_avatar, rpx2px(150),rpx2px(150),25);

  circleAvatar(ctx, img, x, y, r){
    // 如果在绘制图片之后还有需要绘制别的元素,需启动 save() 、restore() 方法,否则 clip() 方法会        
    // 导致之后元素都不会被渲染出来
    // save():保存当前 Canvas 画布状态
    // restore():恢复到保存时的状态
    // ctx:实例化canvas对象
    // img:图片地址
    // x:圆形中心点x坐标
    // y:圆形中心点y坐标
    // r:圆形半径
    ctx.save()
    let d = r * 2;
    let cx = x - r;
    let cy = y - r;
    ctx.arc(x, y, r, 0, 2 * Math.PI);
    ctx.strokeStyle = '#fff'; // 设置绘制圆形边框的颜色
    ctx.stroke(); // 绘制出圆形,默认为黑色,可通过 ctx.strokeStyle = '#FFFFFF',设置想要的颜色
    ctx.clip();
    ctx.drawImage(img, cx, cy, d, d);
    ctx.restore();
  },

3.实现效果

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值