Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2010, 08:25
Avatar de JordyRCC
JordyRCC
 
Fecha de Ingreso: julio-2010
Ubicación: En una cabaña, rodeado de contraseñas encriptadas en md5
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Hacerle crop a una imagen

El return termina el script. La solución es la siguiente:
Código PHP:
Ver original
  1. if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
  2.                 $n_alto = 202;
  3.                 $redu = ($n_alto * 100) / $alto;
  4.                 $n_ancho = round($ancho * $redu / 100);
  5.                 $thumb = imagecreatetruecolor($n_ancho,$n_alto);
  6.                 imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto);
  7.  
  8.             }else{
  9.                 $thumb = imagecreatetruecolor(244, 204);
  10.                 imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
  11.                
  12.                 $n_ancho=244; //Guardamos el valor nuevo de la altura para más adelante
  13.                 $n_alto=204; //Guardamos también el alto
  14.             }

Con lo cual, tu script entero sería:
Código PHP:
Ver original
  1. function crear_thumb($img, $tname){
  2.             // Obtencion de formatos de imagen
  3.             if(stristr(strtolower($img),"jpg") or stristr(strtolower($img),"jpeg")){
  4.                 $img = imagecreatefromjpeg($img);
  5.                 $tipo = "jpg";
  6.             }
  7.    
  8.             if(stristr(strtolower($img),"png")){
  9.                 $img = imagecreatefrompng($img);
  10.                 $tipo = "png";
  11.             }
  12.              
  13.             if(stristr(strtolower($img),"gif")){
  14.                 $img = imagecreatefromgif($img);
  15.                 $tipo = "gif";
  16.             }
  17.                  
  18.                     // Obtenemos ancho y alto de la imagen
  19.             $ancho = imagesx($img);
  20.             $alto = imagesy($img);
  21.             if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
  22.                 $n_alto = 202;
  23.                 $redu = ($n_alto * 100) / $alto;
  24.                 $n_ancho = round($ancho * $redu / 100);
  25.                 $thumb = imagecreatetruecolor($n_ancho,$n_alto);
  26.                 imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto);
  27.  
  28.             }else{
  29.                 $thumb = imagecreatetruecolor(244, 204);
  30.                 imagecopyresized($thumb, $img, 0, 0, abs(($ancho - 244) / 2), abs(($alto - 204) / 2), 244, 204, 244, 204);
  31.                
  32.                 $n_ancho=244; //Guardamos el valor nuevo de la altura para más adelante
  33.                 $n_alto=204; //Guardamos también el alto
  34.             }
  35.  
  36.    
  37.             switch($tipo){
  38.                
  39.                 case "jpg":
  40.                 imagejpeg($thumb, $tname);
  41.    
  42.                 case "png":
  43.                 imagepng($thumb, $tname);
  44.    
  45.                 case "gif":
  46.                 imagegif($thumb, $tname);
  47.                
  48.             }
  49.    
  50.             imagedestroy($thumb);
  51.             return array($n_ancho, $n_alto);
  52.     }

Nos leemos y suerte programando.