Как я могу нарисовать только круглую часть изображения, используя HTML 5 canvas?
Например, сделать фотографию и нарисовать только лицо внутри холста.
Чтобы добиться этого, используйте clip для определения области отсечения:
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/
Код, повторно использованный из моегоОтвет на этот вопрос: Нарисуйте несколько кружков, заполненных изображением
Поскольку я нашел эту тему задолго до того, как нашел решение для того, что искал: приведенный выше код прекрасно работает. Но если вы хотите рисовать круглые области изображения снова и снова, например, в событии onmouseup необходимо сохранить и восстановить состояние контекста. Подробнее объясняется здесь: Можете ли вы иметь несколько областей отсечения в холсте HTML?