我有将一堆图像加载到隐藏的 img 元素中的代码,然后是一个 Javascript 循环,它将每个图像放置到画布上。但是,我想剪辑每个图像,使其放置在画布上时是一个圆圈。
我的循环如下所示:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.beginPath();
context.arc(x+24, y+24, 20, 0, Math.PI * 2, 1);
context.clip();
context.strokeStyle = "black";
context.drawImage(document.getElementById(avatar.id), x, y);
context.stroke();
});
问题是,只有第一张图像被绘制(或可见)。
如果我删除剪辑逻辑:
$$('#avatars img').each(function(avatar) {
var canvas = $('canvas');
var context = canvas.getContext('2d');
var x = Math.floor(Math.random() * canvas.width);
var y = Math.floor(Math.random() * canvas.height);
context.drawImage(document.getElementById(avatar.id), x, y);
});
然后我所有的图像都被绘制出来了。
有没有办法单独剪辑每个图像?
我尝试将剪切区域重置为图像之间的整个画布,但这没有用。