cerca di avere un minimo di flessibilità, sono un pò arrugginito di gd ma l'unica cosa specifica per png sembra essere la funzione imagecreatefrompng.
Usa imagecreatefromjpeg e molto probabilmente funzionerà.
In ogni caso rileggendolo meglio fa proprio ciò che ti ho consigliato come seconda alternativa, solo che anziché uscire non appena incontra una differenza cicla tutti i pixel dell'immagine per stilare delle statistiche sulle differenze.