Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/08/2011, 15:59
Avatar de lordglazoon
lordglazoon
 
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: Redimensionar Imagen

Esta siempre ocupo me anda bien

Código PHP:
Ver original
  1. function redimensionar_imagen($imagen, $nombre_imagen_asociada)
  2.      {
  3.        //indicamos el directorio donde se van a colgar las imágenes
  4.        $directorio = 'tmp/' ;
  5.        //establecemos los límites de ancho y alto
  6.        $nuevo_ancho = 570 ;
  7.        $nuevo_alto = 300 ;
  8.  
  9.        //Recojo información de la imágen
  10.        $info_imagen = getimagesize($imagen);
  11.        $alto = $info_imagen[1];
  12.        $ancho = $info_imagen[0];
  13.        $tipo_imagen = $info_imagen[2];
  14.  
  15.        //Determino las nuevas medidas en función de los límites
  16.        if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  17.        {
  18.          if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  19.          {
  20.            $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;    
  21.          }
  22.          else
  23.          {
  24.            $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);  
  25.          }
  26.        }
  27.        else //si la imagen es más pequeña que los límites la dejo igual.
  28.        {
  29.          $nuevo_alto = $alto;
  30.          $nuevo_ancho = $ancho;
  31.        }
  32.  
  33.        // dependiendo del tipo de imagen tengo que usar diferentes funciones
  34.        switch ($tipo_imagen) {
  35.          case 1: //si es gif …
  36.            $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  37.            $imagen_vieja = imagecreatefromgif($imagen);
  38.            //cambio de tamaño…
  39.            imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  40.            if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  41.          break;
  42.  
  43.          case 2: //si es jpeg …
  44.            $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  45.            $imagen_vieja = imagecreatefromjpeg($imagen);
  46.            //cambio de tamaño…
  47.            imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  48.            if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  49.          break;
  50.  
  51.          case 3: //si es png …
  52.            $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  53.            $imagen_vieja = imagecreatefrompng($imagen);
  54.            //cambio de tamaño…
  55.            imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  56.            if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  57.  
  58.          break;
  59.        }
  60.        return true; //si todo ha ido bien devuelve true
  61.  
  62. }