回答
您可以使用'source-in'globalCompositeOperation將黑白圖像用作蒙版。首先將遮罩圖像繪製到畫布上,然後將globalCompositeOperation更改爲「源代碼」,最後繪製最終圖像。
您的最終圖像只能在覆蓋面具的地方繪製。
var ctx = document.getElementById('c').getContext('2d');
ctx.drawImage(YOUR_MASK, 0, 0);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(YOUR_IMAGE, 0 , 0);
它部分工作,當我添加更多的圖片到畫布失敗。我如何正確設置蒙版,所以當我加載更多的圖像時,它仍然使用蒙版? – Jaap
將globalCompositeOperation設置回繪圖後最初的狀態(很可能是「源代碼」)。 –
除了皮埃爾的回答,你也可以使用一個黑白圖像作爲圖像掩碼源通過複製其數據到CanvasPixelArray,如:
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);
不幸的是,像素旁路並不像drawImage方法那樣高效。 –
- 1. HTML5 Canvas位圖蒙版和繪圖位圖
- 2. CGImageCreateWithMask以圖像作爲蒙版
- 3. 使用蒙版獲取圖像像素
- 4. CSS webkit圖像蒙版不起作用
- 5. 在固定圖像上使用div作爲蒙版
- 6. 使用.Net和Javascript疊加PNG圖像作爲蒙版
- 7. Android蒙版圖像
- 8. WinRT蒙版圖像
- 9. 將兩個圖像繪製爲HTML5 Canvas
- 10. HTML5 Canvas多個圖像
- 11. HTML5 Canvas疊加圖像
- 12. 使用matlab工具蒙版圖像
- 13. AS3:使用蒙版和裁剪圖像
- 14. 使用Win2D擦除蒙版圖像
- 15. 使用dataurl的圖像蒙版
- 16. Cocos2D:如何使用蒙版圖像
- 17. 使用HTML5和canvas製作動畫圖像
- 18. 含有alpha的蒙版圖像會使內蒙版黑色
- 19. 使用圖像使用webgl,html5 canvas的3D圖形實現
- 20. Flex 4使用橢圓作爲蒙版
- 21. css圖像蒙版覆蓋
- 22. 蒙版/裁剪圖像
- 23. jquery蒙版圖像效果
- 24. 多重蒙版圖像
- 25. 反轉SVG圖像蒙版
- 26. 生成Imagick圖像蒙版圖像
- 27. 圖像和圖層(HTML5,canvas,JS,CSS ??)
- 28. PHP:如何使用alpha蒙版爲圖像創建陰影
- 29. 爲什麼我的圖像變成負面使用SVG蒙版
- 30. html5 canvas作爲應用程序
是,如果在遮罩圖像上確實存在透明區域,則可以使用'drawImage()'在畫布頂部繪製圖像。透明部分將讓底層圖像/畫布閃耀。 – devnull69
這不是我的意思,我希望形狀可以剪切圖像,以便圖像的其餘部分變得透明。 – Jaap