Con el código que presentas "no bajas" tu imagen .. Lo que pasa es que tu "al parecer" trabajas con tu servidor (PHP) en el mismo sitio donde "dejas" tu archivo (o lo generas) físicamente.
Aclara esa situación .. el concepto es -diferente- dejear o crear un archivo en el servidor que "bajarlo" al cliente (navegador que lo pide y que este lo descargue y deje en el directorio de su PC).
Sobre el problema concreto que tienes. Podrías indicar los bytes que vas a escribir:
Código PHP:
fwrite($fp, $img, strlen($img));
Un saludo,