L'immagine salvata ha lo sfondo trasparente, quella visualizzata richiamando lo script PHP no, poiché non hai usato la funzione
imagesavealpha, dunque il canale per la trasparenza viene ignorato. Inoltre è inutile ricaricare l'immagine con le librerie GD solo per visualizzarla. Una volta che l'hai salvata su file puoi usare la funzione
file_get_contents per leggere il file e mandarlo in uscita. Sarebbe ancora meglio non disturbare la memoria di massa, in quanto l'immagine è ancora in memoria e potresti fare a meno di andare nuovamente a leggerla. Infine, non dimenticare di usare
imagedestroy per liberare la memoria!