canvas图片画圆角

冷不防 2023-01-11 08:52 340阅读 0赞

获取屏幕比率

有的手机屏幕实际分辨率的像素比页面过去的尺寸像素要大,一遍是一倍或者两倍

  1. var getPixelRatio = function(context) {
  2. var backingStore = context.backingStorePixelRatio ||
  3. context.webkitBackingStorePixelRatio ||
  4. context.mozBackingStorePixelRatio ||
  5. context.msBackingStorePixelRatio ||
  6. context.oBackingStorePixelRatio ||
  7. context.backingStorePixelRatio || 1;
  8. return (window.devicePixelRatio || 1) / backingStore;
  9. };

初始化canvas

  1. var canvas = document.createElement('canvas')//画布
  2. var ctx = canvas.getContext("2d");
  3. var ratio = getPixelRatio(ctx); // 获取屏幕比率
  4. canvas.width = 750*ratio; // 设置生成图片容器的宽高
  5. canvas.height = 1335*ratio;
  6. ctx.clearRect(0,0,canvas.width,canvas.height); // 设置背景颜色
  7. ctx.fillStyle = '#000000';
  8. ctx.fillRect(0,0,canvas.width, canvas.height);

画矩形图片+圆角

  1. /*
  2. * 参数说明
  3. * ctx Canvas实例
  4. * img 图片地址
  5. * x x轴坐标
  6. * y y轴坐标
  7. * w 宽度
  8. * h 高度
  9. * r 弧度大小
  10. */
  11. drawRoundRect(ctx, r, x, y, w, h, img) {
  12. ctx.save();
  13. if (w < 2 * r) r = w / 2;
  14. if (h < 2 * r) r = h / 2;
  15. ctx.beginPath();
  16. ctx.moveTo(x + r, y);
  17. ctx.arcTo(x + w, y, x + w, y + h, r);
  18. ctx.arcTo(x + w, y + h, x, y + h, r);
  19. ctx.arcTo(x, y + h, x, y, r);
  20. ctx.arcTo(x, y, x + w, y, r);
  21. ctx.closePath();
  22. ctx.clip();
  23. ctx.drawImage(img, x, y, w, h);
  24. ctx.restore(); // 返回上一状态
  25. },

圆形头像

  1. /*
  2. * 圆角图片=>参数说明
  3. * ctx Canvas实例
  4. * img 图片地址
  5. * x x轴坐标
  6. * y y轴坐标
  7. * r 圆形半径
  8. */
  9. circleImg(ctx, img, x, y, r) {
  10. ctx.save();
  11. var d = 2 * r;
  12. var cx = x + r;
  13. var cy = y + r;
  14. ctx.arc(cx, cy, r, 0, 2 * Math.PI);
  15. ctx.clip();
  16. ctx.drawImage(img, x, y, d, d);
  17. ctx.restore();
  18. },

导出生成头像链接

导出的数据为base64的图片链接,可以赋值到需要展示的图片上,这样就能实现图片合成的效果了

  1. var imgData = canvas.toDataURL()

发表评论

表情:
评论列表 (有 0 条评论,340人围观)

还没有评论,来说两句吧...

相关阅读

    相关 canvas图片圆角

    获取屏幕比率 有的手机屏幕实际分辨率的像素比页面过去的尺寸像素要大,一遍是一倍或者两倍 var getPixelRatio = function(context)

    相关 canvas绘制圆角头像

    如果你想绘制的网页包含一个圆弧形的头像的canvas图片,但是头像本身是正方形的,需要的方法如下: 首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍)