codice:
if($read != "." && $read != ".." ) {
$fp = fopen($cartella . $read, 'rb');
$data = fread($fp, 4);
fclose($fp);
if (substr($data, 0, 2) == "\xFF\xD8") {
$valid = true;
} else {
$valid = false;
}
if ($valid === true) {
$array_immagini[] = $cartella . $read;
}
} else {
//echo ($read . " non è una jpeg");
}
non l'ho provato, ma dovrebbe andare 
per aggiungere altri formati validi...basta modificare
if (substr($data, 0, 2) == "\xFF\xD8") {
come vedi qui estraggo i primi 2 caratteri di quei 4 presi con l'fread e li confronto con i due caratteri standard presenti nell'header jpeg 
basta fare la stessa cosa con gli altri
ovviamente con questo sistema sei certa al 100% che il file è quello, tranne se lo scrivono di proposito, anche se non sarebbe molto utile (tranne per usare qualche buggone di internet exploder)