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 相关文章推荐
纯CSS3实现表单验证效果(非常不错)
Jan 18 HTML / CSS
CSS3 calc()会计算属性详解
Feb 27 HTML / CSS
CSS的background属性及CSS3的背景图片设置总结
Jun 13 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
css3翻牌翻数字的示例代码
Feb 07 HTML / CSS
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
Oct 29 HTML / CSS
详解CSS3+JS完美实现放大镜模式
Dec 03 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
Mar 17 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
Jun 30 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 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
通过文字传递创建的图形按钮
2006/10/09 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
php广告加载类用法实例
2014/09/23 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php接口技术实例详解
2016/12/07 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
django 简单实现登录验证给你
2019/11/06 Python
python支持多线程的爬虫实例
2019/12/21 Python
python能做哪方面的工作
2020/06/15 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
介绍一下#error预处理
2015/09/25 面试题
智能电子应届生求职信
2013/11/10 职场文书
小学社团活动总结
2014/06/27 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏