Hola gracias por tu respuesta pero creo que no me he explicado bien.
No quiero guardar lo como una imagen, esto ya lo se, quiero guardar lo dibujado en el canvas y luego poder recuperarlo y editarlo pero no como imagen sino como tapiz.
No puedo guardar todo el codigo ya que el usuario puede trazar mediante el raton lo que se guarda en un array que contiene los trazos pero ademas hay mas arrays que contienen otros trazos y asi.