Hola,
Tu prblema esta en como intentas crear dinamicamente el nombre de las funciones. Intentalo asi:
Código PHP:
$separar = explode('.',$imagen);
$pp='imagecreatefrom'.$separar[1]
$fuente = @$pp($ruta);
y asi con las demas.
Ademas, ¿por que usas un bucle? Solo debes mostrar una imagen cada vez.
Saludos.