Ovvio che ti abbia dato quel tipo di output. Il fread apre l'immagine in modalit testo e interpreta 8 bit per volta considerandoli caratteri (come fa il blocco note per intenderci).
Mai provato ad aprire un file binario con blocco note?
L'header non basta perch stato gi inviato alla pagina un output in formato testo. Prova a far aprire l'immagine in una pagina a parte e inviare quell'header.