Ho un codice che carica un mucchio di immagini in elementi img nascosti e quindi un loop Javascript che posiziona ogni immagine sulla tela. Tuttavia, voglio ritagliare ogni immagine in modo che sia un cerchio quando viene posizionata sulla tela.È possibile avere più aree di ritaglio in una tela HTML?
Il mio ciclo si presenta così:
$$('#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();
});
Il problema è che solo la prima immagine viene disegnata (o è visibile).
Se rimuovo la logica di ritaglio:
$$('#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);
});
Poi tutte le mie immagini sono tratte.
C'è un modo per ottenere ogni immagine ritagliata individualmente?
Ho provato a reimpostare l'area di ritaglio come l'intera tela tra le immagini ma non ha funzionato.
save/restore - che è stato! grazie mille. non sono sicuro sul tuo consiglio di disegnare le immagini in modo diverso. il codice drawimage funziona bene come ora, quale sarebbe il vantaggio di utilizzare il codice che hai fornito? – emh
È semplice, non è necessario aggiungere tutti i file di immagine nella pagina. Sarà sufficiente vedere la sorgente nella classe Image(). Il vantaggio di rimuoverli consente alla pagina di non caricare quelle immagini sul caricamento della pagina. Il tempo di caricamento della pagina (problema di prestazioni) stiamo parlando :) – Myra
L'immagine non viene ritagliata correttamente per me .. – CarbonDry