Vous pouvez stocker le contenu de l'image directement dans votre base de données.
Comme vous l'avez dit, vous devez analyser le type de contenu du nom de fichier. Vous pouvez également ajouter un champ à votre base de données qui contient l'extension.
$extension = end(explode('.', $row['file']));
Ensuite, vous devez créer un tableau contenant le type de contenu d'en-tête :
$types['jpg'] = 'image/jpeg';
$types['png'] = 'image/png';
puis envoyez l'en-tête (vous voudrez vérifier si les types tableau contient l'extension clé et erreur si ce n'est pas le cas)
header('Content-Type: ' . $types[$extension]);
Chargez ensuite votre image avec
echo file_get_contents($image);
Ça devrait le faire. Notez qu'il faut bien vérifier si le paramètre ImageID est un entier, pour des raisons de sécurité :
if(!ctype_digit($_GET['ImageID'])) // error