Как нарисовать только круглую часть изображения с помощью HTML 5 canvas? - PullRequest
3 голосов
/ 23 августа 2011

Как я могу нарисовать только круглую часть изображения, используя HTML 5 canvas?

Например, сделать фотографию и нарисовать только лицо внутри холста.

Ответы [ 2 ]

6 голосов
/ 24 августа 2011

Чтобы добиться этого, используйте 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/

Код, повторно использованный из моегоОтвет на этот вопрос: Нарисуйте несколько кружков, заполненных изображением

0 голосов
/ 10 июля 2012

Поскольку я нашел эту тему задолго до того, как нашел решение для того, что искал: приведенный выше код прекрасно работает. Но если вы хотите рисовать круглые области изображения снова и снова, например, в событии onmouseup необходимо сохранить и восстановить состояние контекста. Подробнее объясняется здесь: Можете ли вы иметь несколько областей отсечения в холсте HTML?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...