Además de la respuesta de Pierre también se puede utilizar una imagen en blanco y negro como fuente máscara para su imagen mediante la copia de sus datos en un CanvasPixelArray como:
var
dimensions = {width: XXX, height: XXX}, //your dimensions
imageObj = document.getElementById('#image'), //select image for RGB
maskObj = document.getElementById('#mask'), //select B/W-mask
image = imageObj.getImageData(0, 0, dimensions.width, dimensions.height),
alphaData = maskObj.getImageData(0, 0, dimensions.width, dimensions.height).data; //this is a canvas pixel array
for (var i = 3, len = image.data.length; i < len; i = i + 4) {
image.data[i] = alphaData[i-1]; //copies blue channel of BW mask into A channel of the image
}
//displayCtx is the 2d drawing context of your canvas
displayCtx.putImageData(image, 0, 0, 0, 0, dimensions.width, dimensions.height);
sí, si realmente hay algún área transparente en la imagen de la máscara, puede usar 'drawImage()' para dibujar la imagen en la parte superior del lienzo. La parte transparente dejará que la imagen/lienzo subyacente brille. – devnull69
Eso no es lo que quiero decir, quiero que la forma recorta la imagen, para que el resto de la imagen se vuelva transparente. – Jaap