In HTML5 Canvas puoi disegnare un'immagine nel suo complesso, o disegnarne solo una parte, o disegnarne solo una parte in un rettangolo arbitrario (che può ridimensionarlo).Definisci un rettangolo di origine per un SVG <image> come puoi in HTML Canvas o CSS
Ecco un esempio di tutti e tre:
Ecco il codice usato per disegnare questi tre esempi:
ctx.drawImage(img, 0, 0);
ctx.drawImage(img,
// source rect
50, 50, 70, 70,
// destination rect
0, 200, 70, 70
);
ctx.drawImage(img,
// source rect
50, 50, 70, 70,
// destination rect
0, 270, 30, 30
);
Questo è anche relativamente facile da fare in CSS.
La mia domanda è, per una determinata immagine, come si possono ottenere gli stessi effetti con gli elementi SVG <image>
?
Come faccio, ad esempio, a creare un'immagine che occupa 50x50 pixel, che mostra una porzione di href di riferimento, come nel primo ritaglio?
Uno potrebbe utilizzare un tracciato di ritaglio per ritagliare parte dell'immagine, ma quindi (apparentemente) non è possibile utilizzare un tracciato di ritaglio di un'immagine più grande mentre si definisce la larghezza e l'altezza dell'elemento <image>
come piccolo.
Ecco un violino con il codice di cui sopra, più un elemento di esempio SVG:
Grazie Zach! Questo non funzionerà per il mio caso (ne ho bisogno anche loro trasformati), ma è una soluzione molto elegante e probabilmente sarà ciò che la maggior parte delle persone in cerca di questo Q su StackOverflow ha bisogno, quindi sto marcando accettato. –
@SimonSarris Ho aggiornato la mia risposta con un paio di altre opzioni che potresti essere in grado di usare invece –
La soluzione generalizzata alla quale ho finito riguarda una trasformazione di ClipPath + 3, puoi vedere un esempio qui: http: // jsfiddle. net/rn7Ky/ –