之前发现在网上无法找到相关的内容,找的内容测试也发现有bug。遂,整理思路,自己研究一个可以实现效果的功能。

具体思路就是:首先获取到图片的资源,如果使用img加载的,那一定要等img触发onload以后处理。
我使用的图片是等宽高的图片,获取到图片资源以后,额外的创建一个canvas,将图像使用drawImage方法画到画布上,我们在这个canvas上面处理图像。通过canvas对象的context的createPattern创建一个pattern对象。这个对象不但可以实现重复图像,还可以将我们需要图像资源保存下来,并且赋值给填充对象fillStyle。
创建好pattern对象后,我们就可以使用clearRect方法,将画布清空。
然后,进行画圆操作,使用context的arc方法画圆。
最后,调用fill方法填充即可。

简单的案例代码:

ctx.fillStyle = ctx.createPattern(img, 'no-repeat');
ctx.clearRect(0, 0, num, num);
ctx.arc(r, r, r, 0, Math.PI * 2);
ctx.fill();canvasCtx.drawImage(pixelCanvas, x - r, y - r, num, num);

由于急着下班,就没有单独写案例,从项目里面把代码拷贝出来显示一下。
重点就是需要创建一个额外处理图像的canvas,处理好以后就可以将这个canvas的数据使用drawImage方法放到你的canvas里面了。

完整案例代码

<!doctype html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>canvas画布实现圆形图片</title>
</head>
<body>
<canvas id="canvas" style="margin: 0 auto; display: block;"></canvas>
<canvas id="pixelCanvas"></canvas>
</body>
<script>var canvas = document.getElementById('canvas');let img = new Image();//这里直接修改图片的路径img.src = "meinv.jpg";img.onload = function () {canvas.width = img.width;canvas.height = img.height;let ctx = canvas.getContext("2d");//获取图片宽高的最小值let min = Math.min(img.width, img.height);let r = min/2;ctx.fillStyle = ctx.createPattern(img, 'no-repeat');ctx.clearRect(0, 0, img.width, img.height);ctx.arc(img.width/2, img.height/2, r, 0, Math.PI * 2);ctx.fill();};
</script>
</html>

使用canvas生成一个圆形的图片相关推荐

  1. 小程序通过canvas生成海报保存为图片的技巧

    小程序通过canvas生成海报保存为图片的技巧 最近公司要求在小程序点击分享,要生成一张图片,可以保存在用户相册里,图片里的内容根据后台返回的数据生成,这就涉及到小程序画布的知识了,因为微信文档上,画 ...

  2. 用canvas绘制一个圆形,实现绕着一个中心运动

    实现效果 使用canvas绘制一个圆形,实现绕着一个中心,轨迹类似于走一个椭圆的轨迹那样路线,并且实现漂浮的效果. 这里只是一个实例Demo,直接运行就可以,下面附上代码: <!doctype ...

  3. 微信小程序 输入文字用canvas生成公章并转为图片

    <input type="text" placeholder="请输入公司名称" bindinput="bindInputCompany&quo ...

  4. canvas绘制一个圆形

  5. 如何用 Java 对 PDF 文件进行电子签章(二)生成一个图片签章

    参考: https://blog.csdn.net/javasun608/article/details/79307845 https://blog.csdn.net/zdavb/article/de ...

  6. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  7. android画一个圆形图片组件

    imageview 显示圆形图片如下图. 圆形头像原理. 1.根据图片创建一个大小相同的画布. 2.在画布上画一个圆形. 3.画一个绘制交集,显示上层. // 将圆形图片,返回Bitmappublic ...

  8. canvas canvas2image 生成bmp格式的图片

    原因:canvas  生成图片,可通过toDataURL()方法. canvas.toDataURL(type, encoderOptions); 1.type:图片格式,默认为 image/png, ...

  9. vue生成一个姓名的头像图片Base64格式

    关注微信公众号:每日玩机 获取ios.Android.tv.mac黑科技软件 本方法是写成了全局方法,用this.$userHead(name)调用,如需单独在一个页面中使用,也可以在页面中单独写成一 ...

最新文章

  1. java format 字符_JAVA字符串格式化-String.format()的使用
  2. C++中智能指针的设计和使用
  3. mysql的付费功能_MYSQL对游戏用户付费行为分析
  4. Spark SQL 加载数据
  5. spring 基于注解的控制器配置
  6. Linux恢复win分区,找到了linux分区顺序错乱修复方法
  7. Auto 和 Decltye 的区别
  8. 阿里云全站加速DCDN全面支持WebSocket协议
  9. ssh 远程登录_C.4 彻底解决-新版本Sentaurus TCAD的SSH远程登录问题!!!
  10. 360数科第三季度财报:输出积木式技术样板,科技业务占比提升至28%
  11. ostringstream的使用方法
  12. 车辆调度(科大讯飞杯)
  13. 《愿你历尽千帆 归来仍是少年》 读后
  14. 【以太网安全实验】--- 端口安全/防MAC地址飘移/防伪冒DHCP攻击/MAC地址表安全
  15. Python NLPIR(中科院汉语分词系统)的使用 十五分钟快速入门与完全掌握
  16. SkyEye硬件模拟平台
  17. USB键盘背后的那些事儿
  18. mysql在线编辑器
  19. 行业渠道再洗牌,运营商或重掌行业话语权
  20. Logistic Regression (LR) 详解

热门文章

  1. Linux-线程(LWP)
  2. 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序
  3. 什么叫句柄(Handle)?
  4. linux下/proc/pid/maps和pmap命令详解
  5. 如何实现ArrayList的线程安全
  6. linux 安全审计功能,Linux安全审计命令
  7. python3 TypeError: 'map' object is not subscriptable
  8. 微信小程序 数据在缓存中的存储和获取
  9. 凤凰系统虚拟机装卡_虚拟机安装凤凰系统(PhoenixOS)教程
  10. 多种内网穿透工具的比较