Hola. Tengo una consulta sobre la calidad de imagen al redimensionar con PHP
 
Tengo una función en php que cambia el tamaño de una foto grande a una pequeña, pero se pierde la calidad de la imagen y se ve extraña. 
Existe alguna solución para mantener la calidad de imagen al redimensionar con php? 
Dejo mi página donde aparecen las imágenes: 
http://www.publicalibre.cl 
Dejo mi código:     
Código PHP:
Ver original- if (isset($_FILES['file'])){ 
-          
-         if($_FILES['file']['tmp_name']){ 
-             // Creamos la cadena aletoria 
-             $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 
-             $cad = ""; 
-             for($i=0;$i<12;$i++) { 
-             } 
-             // Fin de la creacion de la cadena aletoria 
-          
-             $tamano         =   $_FILES[ 'file' ][ 'size' ]; // Leemos el tamaño del fichero 
-             $tamaño_max        =   "3000000"; // Tamaño maximo permitido [3MB] 
-          
-             if( $tamano < $tamaño_max){ // Comprovamos el tamaño  
-                 $destino    =   'uploads/tmp' ; // Carpeta donde se guardata 
-                 $sep        =   explode('image/',$_FILES["file"]["type"]); // Separamos image/ 
-                 $tipo       =   $sep[1]; // Optenemos el tipo de imagen que es 
-   
-                 if($tipo == "PNG" || $tipo == "png" || $tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "GIF" || $tipo == "JPG" || $tipo == "jpg" || $tipo == "JPEG" || $tipo == "jpeg"){// Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen 
-                  
-                     move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$cad.'.'.$tipo);  // Subimos el archivo 
-                     $_SESSION['Imagen'] = $cad.'.'.$tipo; 
-                 }else{  
-                     // Si la extensión no es correcta 
-                     echo "NOTA: Imagen con extensión no permitida."; 
-                 } 
-                              
-             }else{  
-                 // Si supera el tamaño de permitido lo desimos 
-                 echo "NOTA: El archivo supera el tamaño permitido.";            
-             } 
-                      
-         } 
-   
-     if(isset($_SESSION['Imagen'])){ 
-          
-         function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad) 
-         {  
-             // Crear una imagen desde el original  
-             // Crear una imagen nueva  
-             // Redimensiona la imagen original copiandola en la imagen  
-             // Guardar la nueva imagen redimensionada donde indicia $img_nueva  
-             ImageJPEG($thumb,$img_nueva,$img_nueva_calidad); 
-         } 
-   
-          
-         $origen="uploads/tmp/".$_SESSION['Imagen'].""; 
-         $destino="uploads/".$_SESSION['Imagen'].""; 
-         $destino_temporal=tempnam("uploads/tmp/","tmp"); 
-   
-         redimensionar_jpeg($origen, $destino_temporal, 200, 200, 200); 
-   
-         // Guardamos la imagen 
-          
-         // Borramos la Imagen de Origen y la de Destino Temporal /tmp 
-         if($destino_temporal){ 
-         }    
-     } 
-      
-     }