El método es bien simple y consiste en invocar al método que dibuja las imágenes, drawImage(), enviando distintos juegos de parámetros. Anteriormente ya habíamos trabajado con este método, que como debemos saber, pertenece al objeto contexto de un canvas. En el pasado lo llamamos simplemente enviándole la imagen y las coordenadas donde había que colocarla. Ahora vamos a ver los otros dos modos de invocarlo, por medio de parámetros adicionales, que nos faltan por conocer. El primero de los modos de invocación permite escalar una imagen y el segundo recortarla y escalarla en un mismo paso.
Las nuevas dimensiones de la imagen a dibujar pueden ser las que deseemos. Pueden incluso no ser proporcionales a las dimesiones actuales, en ese caso el navegador estirará la imagen o la achatará para adaptarla a la anchura y altura que hayamos indicado.
La manera de llamar a este método del contexto del canvas es la siguiente:
drawImage(imagen, posX, posY, anchura, altura);
Este método dibujará la imagen en la posición definida por las coordenadas (posX, posY) y con la anchura y altura dadas en los últimos dos parámetros.
Así que podemos ver un ejemplo de código escalando la imagen:
var ctx = cargaContextoCanvas('micanvas');
if(ctx){
//Creo una imagen conun objeto Image de Javascript
var img = new Image();
//indico la URL de la imagen
img.src = 'logo-desarrolloweb.gif';
//defino el evento onload del objeto imagen
img.onload = function(){
//incluyo la imagen en el canvas escala muy pequeña
ctx.drawImage(img, 0, 0, 50 , 24);
//un poco mayor
ctx.drawImage(img, 70, 10, 80 , 38);
//tamaño natural
ctx.drawImage(img, 160, 20);
}
}
Este ejemplo dibuja la misma imagen tres veces, dos de ellas está escalada a distintas dimensiones y la última está a tamaño natural (sin redimensionar).
Puedes ver el ejemplo en funcionamiento en una página aparte.
drawImage(imagen, imgX, imgY, imgAncho, imgAlto, lienzoX, lienzoY, LienzoAncho, LienzoAlto)
Entre los parámetros, "imagen" sigue siendo el objeto imagen Javascript que queremos pintar. Todos los parámetros siguientes los podemos entender a la vista de la siguiente imagen:

Podemos ver a continuación el código de un ejemplo que realiza el recorte y escalado de una imagen.
var ctx = cargaContextoCanvas('micanvas');
if(ctx){
//Creo una imagen conun objeto Image de Javascript
var img = new Image();
//indico la URL de la imagen
img.src = 'sagrada-familia.jpg';
//defino el evento onload del objeto imagen
img.onload = function(){
ctx.drawImage(img, 177, 11, 120 , 234, 10, 10, 90, 176);
//tamaño natural
ctx.drawImage(img, 160, 20);
}
}
Este ejemplo dibuja una imagen un par de veces. Primero recorta un área de la imagen original y la escala, por el método de drawImage() que acabamos de relatar. Luego dibuja la imagen original, sin recortar ni escalar, y la coloca al lado de la otra, en el mismo canvas.
Para acabar, dejamos un enlace, de modo que puedas ver este segundo ejemplo de trabajo con imágenes en canvas.