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教程(2):网页边框半径和网页圆角
Apr 02 HTML / CSS
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
Jul 11 HTML / CSS
Css3+Js制作漂亮时钟(附源码)
Apr 24 HTML / CSS
CSS3的resize属性使用初探
Sep 27 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 HTML / CSS
详解css position 5种不同的值的用法
Jul 30 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
Jun 01 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
Jun 22 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
Dec 19 HTML / CSS
HTML5录音实践总结(Preact)
May 07 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 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自定义的格式化时间示例代码
2013/12/05 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
Python新手学习装饰器
2020/06/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
EJB的基本架构
2016/09/22 面试题
Ajax的优点和缺点
2014/11/21 面试题
物业工作计划书
2014/01/10 职场文书
单位委托书怎么写
2014/08/02 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
正规欠条模板
2015/07/03 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js