Esistono centinaia di tutorial, come si può ritagliare un'immagine da drawImage() su una tela.Ritaglia tela/Esporta tele html5 con una certa larghezza e altezza
context.drawImage(imageObj, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
Tuttavia, ho una tela che riempie il browser dell'utente. Esportando il canvas come immagine, vorrei esportare solo un'area di 640px * 480px da (0 | 0).
Problema: Come posso dire a javascript di utilizzare solo 640 * 480 dell'area di disegno per toDataURL()?
Ecco quello che ho finora:
$("#submitGraphic").click(function(){
var canvas = document.getElementsByTagName("canvas");
// canvas context
var context = canvas[0].getContext("2d");
// get the current ImageData for the canvas
var data = context.getImageData(0, 0, canvas[0].width, canvas[0].height);
// store the current globalCompositeOperation
var compositeOperation = context.globalCompositeOperation;
// set to draw behind current content
context.globalCompositeOperation = "destination-over";
//set background color
context.fillStyle = "#FFFFFF";
// draw background/rectangle on entire canvas
context.fillRect(0,0,canvas[0].width,canvas[0].height);
// not working, seems to clear the canvas? browser hangs?
// seems that I can click a white image in the background
/*canvas[0].width = 640;
canvas[0].height = 480;*/
// not working either
/*canvas[0].style.width = '640px';
canvas[0].style.height = '480px';*/
// not working at all
/*context.canvas.width = 640;
context.canvas.height = 480;*/
// write on screen
var img = canvas[0].toDataURL("image/png");
document.write('<a href="'+img+'"><img src="'+img+'"/></a>');
})
PS: io non voglio ridimensionare o scala, semplicemente ritaglio/ritaglio alla finestra fissa. Here Ho letto che specifichi solo canvas.width e canvas.height, ma questo cancella la tela.
Impressionante, funziona molto bene!/L'unica cosa che mi irrita è che Firefox indica il caricamento della pagina (la scheda mostra il cerchio che gira) quando l'immagine è già comparsa. Cliccando ESC compare wyciwyg: // nell'URL !? ... "wyciwyg è uno schema URI interno utilizzato per rappresentare le pagine dei risultati di document.write"// Comunque, felice che tu mi abbia dato una soluzione funzionante! –
la variabile "dati" è assegnata ma mai utilizzata ... –
né la variabile compositoOperazione –