ctx [i] и img [i] находятся вне области видимости в обработчике загрузки.
img [[i], однако, доступен через это, но вы должны передать ctx [i] в качестве аргумента вашего обработчика загрузки
img[i].onload = function(ctxi) {
return function(ctxi) {
ctxi.drawImage(this, 0, 0);
}
}(ctx[i]);