我有一个画布,背景中有一个大图像,前面有一个较小的圆形图像。我实现了这一轮的图像效果,通过使用夹子,像这样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