Hola:
Yo tengo algo hecho de la siguiente manera: vuelco de la tabla el nombre de los ficheros en un array. y luego leo el directorio con dir comprobando cada entrada con in_array(), y descartando luego los ficheros no válidos:
if (preg_match('/(.jpg|.gif|.png)/', $entrada))...
Saludos