sucede que al menos debe cargarse el header de la imagen, me refiero al header como archivo que contiene informacion acerca del archivo, en este caso de la imagen. el codigo se ejecuta una linea tras la otra sin esperar que al menos la imagen cargue y por eso las variables no te funcionan. intenta realizar la operacion necesaria usando el evento onload de la imagen.
Código:
var img = new Image();
img.src = 'ruta/archivo.extension';
img.onload = function(){
// aqui realiza el resto de la operacion con las propiedades this.width y this.height;
}