Para mostrar la imagen resterizada tendremos que añadir simplemente la función de javascript:
function exportar(){
window.open(canvas.toDataURL());
}
Muchas gracias, os intentare ayudar si tenéis dudas.



<canvas id="canvas" width="900" height="600"> <p>Su navegador no soporta HTML5</p> </canvas>
<body onmousemove="pintar(event)" style="margin:0;padding:0;">
var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); ctx.fillStyle = "#000"; ctx.fillRect (0, 0, 900, 600); var posx = 0; var posy = 0;
function pintar(e){ posx = e.clientX; posy = e.clientY; ctx.fillStyle = "#FFF"; ctx.fillRect (posx, posy, 3, 3); }
<canvas id="canvas" height="500px" width="500px"> Su navegador no soporta Canvas! </canvas>A partir de aquí todo será JavaScript.
window.onload = function(){ dibujar(x,y,x2,y2); click(); };
function dibujar(x,y,x2,y2){ canvas = document.getElementById("canvas"); ctx = canvas.getContext("2d"); ctx.fillStyle = "green"; ctx.fillRect(x, y, x2, y2); ctx.fill(); }
function click(){ //Añadimos un addEventListener al canvas, para reconocer el click canvas.addEventListener("click", //Una vez se haya clickado se activará la siguiente función function(e){ /** Las siguientes 2 líneas lo que hacen és saber en que * parte del canvas se ha clickado. Si ha clickado dentro * del cuadrado se activará mover(). * La operación que utilizamos es restar la parte izquierda que sobra * des del canvas asta el explorador (cancas.offsetLeft) * con el click (e.clientY) */ if(e.clientX-canvas.offsetLeft > 200 && e.clientX-canvas.offsetLeft < 280){ //Aqui lo mismo que en la anterior sólo que miramos alto y //ancho del cuadrado if(e.clientY-canvas.offsetTop > 300 && e.clientY-canvas.offsetTop < 380){ //si ha clickado dentro del cuadro verde mover(); } } } ,false);}
function mover(){ //vamos restando la coordenada Y hasta un límite de 150 if(y>150){ y--; //es la encargada de llamar cada 10 milesimas a la funcion mover() //y así crear el efecto de movimiento setTimeout(mover,10); } //tendremos que ir limpiando el canvas //para evitar que se cree una columna //por culpa de que los cuadrados se vayan solapando limpiar(); //dibujamos el cuadrado otra vez con la coordenada Y modificada //la modificación la hemos creado más arriba dibujar(x,y,x2,y2); }
function limpiar(){ ctx.fillStyle = "white"; ctx.fillRect(0, 0, 500, 500); }


