Есть такое понятие - сигнатура. Набор байтов которые встречаются только в этом типе файлов.
У PNG тоже есть сигнатура.
www.libpng.org/pub/png/spec/1.2/PNG-Structure.htmlThe first eight bytes of a PNG file always contain the following (decimal) values:
137 80 78 71 13 10 26 10
Еще можно посмотреть исходники утилиты identify из пакета ImageMagick
www.imagemagick.org/script/identify.php