Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2011, 08:30
rambo_3
 
Fecha de Ingreso: enero-2010
Mensajes: 150
Antigüedad: 14 años, 3 meses
Puntos: 0
Redimensionar imagen con PHP de forma proporcional

Hola, hace tiempo que estoy renegando con un codigo para poder redimensionar imagenes proporcionalmente y que a la vez tengan poco peso en KB. Pude programar la parte en que la foto sube al servidor al igual que el thumbnail. Ahora me faltaria el codigo para que redimensione proporcionalmente segun un ancho dado.

Aquí les paso parte del codigo que tengo para que me ayuden en que tendria que agragar para poder redimensionar imagenes.

Código PHP:
Ver original
  1. <?php
  2. mysql_select_db($database_redimension, $redimension);
  3.  
  4. $nombre = $_POST["textNombre"];
  5.  
  6.        $status = "";
  7.       ($_POST["action"] == "upload") or die ("Error al subir la imagen.");
  8.           // obtenemos los datos del archivo
  9.           $tamano = $_FILES["archivo"]['size'];
  10.           $tipo = $_FILES["archivo"]['type'];
  11.           $archivo = $_FILES["archivo"]['name'];
  12.           $prefijo = substr(md5(uniqid(rand())),0,6);
  13.          
  14.          
  15.             ($archivo != "") or die ("Error al subir la imagen ".$archivo);
  16.            
  17.              // guardamos el archivo a la carpeta "Fotos"
  18.              
  19.               $destino = "Fotosprueba/".$prefijo."_".$archivo;
  20.        
  21.               $info_imagen = getimagesize($destino);
  22.               $ancho = $info_imagen[0];
  23.               $alto = $info_imagen[1];
  24.               if($ancho>=$alto)
  25.                  {
  26.                   $nuevo_alto = round($alto * 500 / $ancho,0);  
  27.                   $nuevo_ancho=$medida;
  28.                   }
  29.               else
  30.                  {
  31.                   $nuevo_ancho = round($ancho * 500 / $alto,0);
  32.                   $nuevo_alto =$medida;  
  33.                  }
  34.               $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  35.               $imagen_vieja = imagecreatefromjpeg($imagen);
  36.               imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  37.               if (!imagejpeg($imagen_nueva, "$imagen"))
  38.                 return false;
  39.                   return true;
  40.    
  41.         //    (copy($_FILES['archivo']['tmp_name'],$destino)) or die ("Error al subir la imagen ".$archivo);
  42.         //      $status = "La imagen <b>".$archivo."</b> se ha subido correctamente!";
  43.         //      echo $status;  ?>
  44.  
  45.                   <?        
  46.          //aquí empieza el código de creación del thumbnail
  47.           $source=$destino; // archivo de origen
  48.           $dest="Fotosprueba/Thumbs/".$prefijo."_".$archivo; // archivo de destino
  49.           $width_d=130; // ancho de salida
  50.           $height_d=98; // alto de salida
  51.  
  52.             list($width_s, $height_s, $type, $attr) = getimagesize($source, $info2); // obtengo información del archivo
  53.           $gd_s = imagecreatefromjpeg($source); // crea el recurso gd para el origen
  54.           $gd_d = imagecreatetruecolor($width_d, $height_d); // crea el recurso gd para la salida
  55.  
  56.             imagecopyresampled($gd_d, $gd_s, 0, 0, 0, 0, $width_d, $height_d, $width_s, $height_s); // redimensiona
  57.             imagejpeg($gd_d, $dest); // graba
  58.        
  59.         // Se liberan recursos
  60.         imagedestroy($gd_s);
  61.         imagedestroy($gd_d);
  62.  
  63.                 $carga = "INSERT INTO aficionados (foto, thumb, descripcion) VALUES ('$destino','$dest','$nombre')";
  64.                 $Resul = mysql_query($carga, $redimension) or die(mysql_error());
  65. ?>


Desde ya muchas gracias y espero que me puedan ayudar. Saludos.