Para saber el formato de la imagen puedes usar
getimagezise() Código PHP:
$imgInfo = getimagesize($img);
switch ($imgInfo[2]) {
case 1: $im = imagecreatefromgif($img); break;
case 2: $im = imagecreatefromjpeg($img); break;
case 3: $im = imagecreatefrompng($img); break;
default: trigger_error('Tipo de imagen no reconocido.', E_USER_WARNING); break;
}
Ahi muestro 3, pero en realidad devuelve mas tipos, cosa de que veas la documentacion..
En teoria, la imagen deberia poder redibujarse, pero no le encuentro mucho sentido.. creo que tomaria tiempop dibujar una imagen grande