Canvas绘制圆形头像

简介: Canvas绘制圆形头像

image.png

实现代码


<canvas id="canvas"
            width="500"
            height="500"></canvas>
    <script>
        let Canvas = document.querySelector('#canvas');
        let ctx = Canvas.getContext("2d");
        // 绘制画布背景
        ctx.fillStyle = "#ccc";
        ctx.fillRect(0, 0, 500, 500);
        // 绘制圆形头像
        let avatar = new Image();
        avatar.src = 'https://api.sunweihu.com/api/sjtx/api.php?lx=c1';
        avatar.onload = (res) => {
            // console.log(res);
            console.log(avatar.height, avatar.width);
            drawCircleImage(ctx, avatar, 250, 250, 100);
            // 图像绘制完成之后继续绘制其他内容
            ctx.strokeStyle = 'red'
            ctx.strokeRect(20, 20, 460, 460);
        }
        /**
         * ctx 画布上下文
         * img 图片对象
         * (x, y)圆心坐标
         * radius 半径
         * 注意:绘制圆形头像之前,保存画笔;绘制完成后恢复
         * */
        function drawCircleImage(ctx, img, x, y, radius) {
            ctx.save();
            let size = 2 * radius;
            ctx.arc(x, y, radius, 0, 2 * Math.PI);
            ctx.clip();
            ctx.drawImage(img, x - radius, y - radius, size, size);
            ctx.restore();
        }
</script>

在线demo: https://mouday.github.io/front-end-demo/canvas/canvas-avatar.html

相关文章
|
JSON 前端开发 数据格式
【前端统计图】echarts实现简单柱状图
【前端统计图】echarts实现简单柱状图
365 0
window.scrollTop 不生效的原因,如何解决
window.scrollTop 不生效的原因,如何解决
1164 0
|
数据可视化 Python
堆叠柱状图(pyecharts足矣 既好看又简单
堆叠柱状图(pyecharts足矣 既好看又简单
1365 0
在 Vue.js 中使用 watch 来监听对象属性的变化
在 Vue.js 中使用 watch 来监听对象属性的变化
|
人工智能 自然语言处理 前端开发
Flame:开源AI设计图转代码模型!生成React组件,精准还原UI+动态交互效果
Flame 是一款开源的多模态 AI 模型,能够将 UI 设计图转换为高质量的现代前端代码,支持 React 等主流框架,具备动态交互、组件化开发等功能,显著提升前端开发效率。
2579 1
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
XML JavaScript 数据安全/隐私保护
一篇文章讲明白js常用js正则表达式大全
一篇文章讲明白js常用js正则表达式大全
480 0
|
小程序 JavaScript 前端开发
小程序如何刷新当前页面?
小程序如何刷新当前页面?
2926 0
|
数据可视化
数据可视化之antv/g6 节点、及自定义节点
数据可视化之antv/g6 节点、及自定义节点
5289 0
|
Linux iOS开发 MacOS
利用Python中的Manim进行数学绘画和创作
利用Python中的Manim进行数学绘画和创作
1458 0