Bueno, esta es la funcion que uso para crear los thumbnails a partir de imagenes .PNG:
   Código PHP:
    <?php 
   function thumb($imagen, $altura, $tipo, $modalidad) { 
     
       $dir_thumb = "archivos/mapas/screens/$tipo/$modalidad/";
           $nombre=basename($imagen);
           $nombre_aux = $nombre;
       $camino=dirname($imagen)."/";
             
           if (!file_exists($dir_thumb.$nombre)) {
            $path = $camino.$nombre;
    
                // Aquí es donde me da el error.            
                $img = imagecreatefrompng($path) or die("No se encuentra la  imagen $path<br>\n");
                 $datos = getimagesize($camino.$nombre) or die("Problemas con                            $camino$nombre<br>\n");
      
         
                  $ratio = ($datos[1] / $altura);
                  $anchura = round($datos[0] / $ratio);
        
                  $thumb = imagecreatetruecolor($anchura,$altura);
       
                   imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
        
                   imagepng($thumb,$dir_thumb.$nombre_aux); 
       
           }
       else {
         
        //error...
       } 
   }
?>    
  EDIT:  Se me olvido poner como valido los png. Lo hago asi:  
 Código PHP:
    
$extension_mapa = strtolower(strrchr($HTTP_POST_FILES['mapa']['name'],'.'));
if  (($extension_mapa == ".png") 
    
  
Cuando el usuario envia la imagen al servidor, compruebo que tenga las medidas adecuadas, que sea .PNG, y si es correcta la subo al servidor. Entonces llamo a esta funcion que coje la foto subida, genera el thumb y lo guarda en otro directorio. 
No se, a ver si hay suerte y alguno veis donde puede estar el error. 
Gracias.