canvas绘制圆角头像的实现方法


Posted in HTML / CSS onJanuary 17, 2019

如果你想绘制的网页包含一个圆弧形的头像的canvas图片,但是头像本身是正方形的,需要的方法如下:

首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍)

let {avatarX, avatarY, avatarW, avatarH} = {20, 20, 80, 80};

然后 只需要调用以下函数即可:

let Canvas = document.createElement('canvas');
let ctx = Canvas.getContext("2d");
let avatar = new Image();
avatar.src = '../src/xx.png';
avatar.onload = (scaleBy = 2) => {
   circleImg(ctx, avatar, avatarX * scaleBy, avatarY * scaleBy, avatarW * scaleBy / 2);
}

// r: 半径
function circleImg(ctx, img, x, y, r) {
    ctx.save();
    var d =2 * r;
    var cx = x + r;
    var cy = y + r;
    ctx.arc(cx, cy, r, 0, 2 * Math.PI);
    ctx.clip();
    ctx.drawImage(img, x, y, d, d);
    ctx.restore();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
May 07 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
Aug 31 HTML / CSS
用React加CSS3实现微信拆红包动画效果
Mar 13 HTML / CSS
css3 实现元素弧线运动的示例代码
Apr 24 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
Mar 12 HTML / CSS
HTML5所有标签汇总及标签意义解释
Mar 12 HTML / CSS
使用phonegap创建联系人的实现方法
Mar 30 HTML / CSS
有关HTML5中背景音乐的自动播放功能
Oct 16 HTML / CSS
移动端html5模拟长按事件的实现方法
Sep 30 HTML / CSS
html2canvas截图空白问题的解决
Mar 24 HTML / CSS
浅析HTML5 Landmark
Sep 11 HTML / CSS
开发微信小程序之WXSS样式教程
Apr 18 HTML / CSS
HTML5如何使用SVG的方法示例
Jan 11 #HTML / CSS
Canvas 像素处理之改变透明度的实现代码
Jan 08 #HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 #HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 #HTML / CSS
h5使用canvas画布实现手势解锁
Jan 04 #HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
Jan 03 #HTML / CSS
详解webapp页面滚动卡顿的解决办法
Dec 26 #HTML / CSS
You might like
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
我的NodeJs学习小结(一)
2014/07/06 NodeJs
jquery中one()方法的用法实例
2015/01/16 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python入门必须知道的11个知识点
2018/03/21 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Python容器类型公共方法总结
2020/08/19 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
招标承诺书
2014/08/30 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP