たくさんの画像を非表示の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);
});
次に、すべての画像が描画されます。
各画像を個別にクリップする方法はありますか?
クリッピング領域を画像間のキャンバス全体になるようにリセットしようとしましたが、うまくいきませんでした。