Comunque giusto per precisione, perchè usi sempre imagepng() se ammetti anche altri tipi di immagini?
Tra l'altro il terzo parametro passato a imagepng() non può essere 100, deve essere un intero compreso tra 0 (nessuna compressione) e 9 (compressione massima)