Tengo un código que carga un montón de imágenes en elementos img ocultos y luego un bucle de Javascript que coloca cada imagen en el lienzo. Sin embargo, quiero recortar cada imagen para que sea un círculo cuando se coloca en el lienzo.¿Puede tener múltiples regiones de recorte en un lienzo HTML?
Mi bucle se ve así:
$$('#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();
});
El problema es que solamente se dibuja la primera imagen (o visible).
Si quito la lógica de recorte:
$$('#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);
});
Entonces todas mis imágenes son atraídos.
¿Hay alguna manera de obtener cada imagen recortada individualmente?
Intenté restablecer el área de recorte para que fuera todo el lienzo entre las imágenes pero eso no funcionó.
Guardar/restaurar - eso fue todo! Muchas gracias. no estoy seguro acerca de su recomendación para dibujar las imágenes de manera diferente. El código de imagen está bien, tal como lo tengo ahora, ¿cuál sería el beneficio de usar el código que me proporcionó? – emh
Eso es simple, no necesita agregar todos los archivos de imagen a la página. Mostrar el origen en la clase Image() será suficiente. El beneficio de eliminarlos permite que su página no cargue esas imágenes en la carga de la página. Es el tiempo de carga de la página (problema de rendimiento) estamos hablando de :) – Myra
La imagen no está recortando correctamente para mí .. – CarbonDry