У меня есть код, который загружает кучу изображений в скрытые элементы img, а затем цикл Javascript, который помещает каждое изображение на холст. Тем не менее, я хочу обрезать каждое изображение так, чтобы оно было кругом, когда оно было помещено на холст.Можете ли вы иметь несколько областей отсечения в HTML-холсте?
Мой цикл выглядит следующим образом:
$$('#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);
});
Тогда все мои изображения нарисованы.
Есть ли способ получить каждое изображение индивидуально обрезанным?
Я попытался сбросить область отсечения, чтобы быть всем холстом между изображениями, но это не сработало.
сохранение/восстановление - это был он! Спасибо большое. не уверен, хотя о вашей рекомендации рисовать изображения по-разному. te drawimage работает отлично, как у меня есть сейчас, что было бы полезно использовать код, который вы предоставили? – emh
Это просто, вам не нужно добавлять все файлы изображений в страницу. Просмотр источника в Image() будет достаточным. Воспользуйтесь возможностью удалить эту страницу, чтобы ваша страница не загружала эти изображения на странице load.It нагрузка на страницу (производительность) время мы говорим о :) – Myra
Изображение не обрезается правильно для меня .. – CarbonDry