Patrones: el mosaico del canvas
El contexto 2D del canvas puede crear y utilizar patrones mediante el método createPattern() que utiliza dos argumentos: uno especifica un objeto imagen y el otro es un valor de repetición similar al bacgkground-repeat de CSS que puede ser:
repeat: El patrón se repite tanto en horizontal como en vertical.
repeat-x, El patrón se repite solo en horizontal .
repeat-y, El patrón se repite solo en vertical.
no repeat: el patrón no se repite.
Luego se podrá usar como relleno o como brocha, o sea, para trazar lineas.
Como es una imagen cargada desde un archivo, nos aseguramos que esté disponible para el patrón, por eso se usa un evento onload: cuando se carga hacer lo que diga function(). En este caso la función crea el patrón a partir de la imagen y rellena el rectángulo.
Puedes usar otro canvas de la página para crear el relleno del mosaico como en este ejemplo donde lo usamos de relleno y para dibujar, como pincel de dibujo.