我有一個畫布,背景中有一個大圖像,前面有一個較小的圓形圖像。我實現了這一輪的圖像效果,通過使用夾子,像這樣HTML Canvas剪輯和putImageData
ctx.save();
ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);
ctx.closePath();
ctx.clip();
ctx.drawImage(img,x-r,y-r,2*r,2*r); // draw the image
ctx.restore();
然後我要旋轉的圓形圖像,所以我使用的第二上下文,旋轉和重繪像這樣
backCanvas=document.createElement('canvas');
backContext=backCanvas.getContext('2d');
backCanvas.width=w;
backCanvas.height=h;
backContext.translate(w/2,h/2);
backContext.rotate(a);
backContext.drawImage(img,-w/2,-h/2,w,h);
var imgData=backContext.getImageData(0,0,w,h);
ctx.save();
ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);
ctx.closePath();
ctx.clip();
ctx.putImageData(imgData,x,y);
ctx.restore();
但是,什麼情況是從背面畫布複製黑色透明背景並且剪輯無法「剪輯」它。
任何幫助,將理解
只是FYI,如果您正在繪製到畫布的圖像是在不同的域上,您將不被允許調用getImageData。 – 2011-03-11 13:29:40
是的,你是絕對正確的。我遇到了這個問題,並通過發佈< - 允許文件訪問從文件> – puk 2011-03-11 21:10:07