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打造动感漂亮时尚的扇形菜单
Mar 18 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
Jan 27 HTML / CSS
利用css3-animation实现逐帧动画效果
Mar 10 HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 HTML / CSS
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
Jan 31 HTML / CSS
浅析HTML5中header标签的用法
Jun 24 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
Aug 18 HTML / CSS
如何避免常见的6种HTML5错误用法
Nov 06 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
CSS使用伪类控制边框长度的方法
Jan 18 HTML / CSS
使用CSS实现音波加载效果
May 07 HTML / CSS
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
May 07 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
用PHP和ACCESS写聊天室(九)
2006/10/09 PHP
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
python得到windows自启动列表的方法
2018/10/14 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
python基于Selenium的web自动化框架
2019/07/14 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
装修致歉信
2014/01/15 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python