la funzione header non vuole nessun output prima, ovvero nemmeno il codice html che hai inserito.
prova ad usare solo questa parte:
codice:
<?php
// istanzio una nuova immagine di dimensioni x=200 e y=300
$immagine = imageCreate(200, 300);
// assegno il primo colore, questo colore sarà anche lo sfondo dell'immagine
$bianco = imageColorAllocate($immagine, 255, 255, 255);
// assegno un secondo colore, da utilizzare per colorare il testo
$nero = imageColorAllocate($immagine, 0, 0, 0);
// visualizzo il testo "HTML.IT"
imageString($immagine, 2, 100, 100, "HTML.IT", $nero);
// imposto correttamente gli header
header("Content-type: image/png");
// invio l'output come immagine PNG
imagePng($immagine);
// libero la memoria
imageDestroy($immagine);
?>