如何使用HTML 5画布仅绘制图像的圆形部分?

时间:2011-08-23 19:28:58

标签: javascript canvas html5-canvas

如何使用HTML 5画布仅绘制图像的圆形部分?

例如,拍摄照片并仅在画布内绘制脸部。

2 个答案:

答案 0 :(得分:6)

实现此目的的方法是使用clip来定义剪辑区域:

var ctx;
var canvas;

var img = new Image();

img.onload = function() {

    canvas = document.getElementById('myCanvas');
    ctx = canvas.getContext('2d');


    ctx.beginPath();
    ctx.arc(100, 100, 60, 0, 6.28, false); //draw the circle
    ctx.clip(); //call the clip method so the next render is clipped in last path
    ctx.stroke();
    ctx.closePath();
    ctx.drawImage(img, -190, 0);
};

img.src = "http://www.antiquiet.com/wp-content/uploads/2011/03/Free-Trapper_Remasters_The-Kills-467x311.jpg";

你可以在这里看到一个工作小提琴:http://jsfiddle.net/hJS5B/47/

从我对这个问题的回答中重复使用了代码:Draw multiple circles filled with image content

答案 1 :(得分:0)

在我找到我正在寻找的解决方案之前很久就找到了这个帖子:上面的代码效果很好。但是如果你想一次又一次地绘制图像的圆形区域,例如在onmouseup事件中,您必须保存并恢复上下文的状态。这里解释了更多内容:Can you have multiple clipping regions in an HTML Canvas?