No estoy seguro si usted todavía está buscando la respuesta, pero aquí es cómo:
var ctx = document.getElementById('your_canvas').getContext("2d");
//ctx.lineWidth = 13;
//ctx.strokeStyle = 'rgba(0,0,0,1)';
//ctx.fillStyle="rgba(0,0,0,0)" // if using this, make sure alpha < 1
ctx.arc(100,100, 50, 0, Math.PI*2,true); // you can use any shape
ctx.clip();
var img = new Image();
img.addEventListener('load', function(e) {
ctx.drawImage(this, 0, 0, 200, 300);
//ctx.fill();
//ctx.stroke();
}, true);
img.src="/path/to/image.jpg";
También puede hacer esto con el patrón, pero se obtiene menos la imagen flexibilidad de colocación
ctx.arc(100,100, 70, 0, Math.PI*2,true);
ctx.clip();
img = new Image()
img.addEventListener('load', function(e) {
ctx.fillStyle = ctx.createPattern(this, 'no-repeat')
ctx.fill();
}, true);
img.src="/path/to/image.jpg"
Se ve muy bien, definitivamente lo intentaré! – tbleckert
Si bien esto fue en última instancia lo que se me ocurrió como solución en el lienzo, después de aumentarlo y modificarlo con todo tipo de cosas que debían hacerse para la aplicación en la que trabajé, resultó que 2 días antes de lanzar algo vino y tenía 2 días para hacer una solución alternativa que resultó ser mucho mejor, más rápida y con más navegadores entre computadoras de escritorio y dispositivos móviles. La solución fue la respuesta @MatTheCat sugirió "Usar un con CSS para border-radius". Solo usé border-radius: 100% para hacerlo circular. La mejor solución sin duda alguna. Solo digo ... – jaredwilli
Solo quería agregar, que es una buena práctica establecer src * después de * establecer la devolución de llamada 'onload'. Es decir. 'thumbImg.src = 'path_to_image';' se convierte en la última línea –