Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2010, 07:05
severicks
 
Fecha de Ingreso: septiembre-2009
Mensajes: 306
Antigüedad: 15 años, 4 meses
Puntos: 10
Hacerle crop a una imagen

hola.

tengo una pagina en que los usuarios pueden subir imagenes pero como pueden subir imagenes de cualquier dimension genera problemas si la proporcion entre alto y ancho no es la adecuada. para eso me he creado este pequeño script basandome an un par de tutoriales encontre:

Código PHP:
    function crear_thumb($img$tname){
            
// Obtencion de formatos de imagen 
            
if(stristr(strtolower($img),"jpg") or stristr(strtolower($img),"jpeg")){ 
                
$img imagecreatefromjpeg($img); 
                
$tipo "jpg"
            } 
    
            if(
stristr(strtolower($img),"png")){ 
                
$img imagecreatefrompng($img); 
                
$tipo "png"
            } 
             
            if(
stristr(strtolower($img),"gif")){ 
                
$img imagecreatefromgif($img); 
                
$tipo "gif"
            } 
                 
                    
// Obtenemos ancho y alto de la imagen 
            
$ancho imagesx($img); 
            
$alto imagesy($img); 
            if((
$ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
                
$n_alto 202
                
$redu = ($n_alto 100) / $alto
                
$n_ancho round($ancho $redu 100); 
                
$thumb imagecreatetruecolor($n_ancho,$n_alto); 
                
imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto); 

            }else{
                
$thumb imagecreatetruecolor(244204);
                
imagecopyresized($thumb$img00abs(($ancho 244) / 2), abs(($alto 204) / 2), 244204244204);
                
                return array(
244204);
            }

    
            switch(
$tipo){
                
                case 
"jpg":
                
imagejpeg($thumb$tname); 
    
                case 
"png":
                
imagepng($thumb$tname); 
    
                case 
"gif":
                
imagegif($thumb$tname); 
                
            }
    
            
imagedestroy($thumb); 
            return array(
$n_ancho$n_alto);
    } 
el problema lo tengo en esta parte:

Código PHP:
if(($ancho/$alto <= 1.20) && ($alto/$ancho <=0.84)){
                
$n_alto 202
                
$redu = ($n_alto 100) / $alto
                
$n_ancho round($ancho $redu 100); 
                
$thumb imagecreatetruecolor($n_ancho,$n_alto); 
                
imagecopyresized($thumb,$img,0,0,0,0,$n_ancho,$n_alto,$ancho,$alto); 

            }else{
                
$thumb imagecreatetruecolor(244204);
                
imagecopyresized($thumb$img00abs(($ancho 244) / 2), abs(($alto 204) / 2), 244204244204);
                
                return array(
244204);
            } 
si entra dentro de ese "else" la imagen no se crea, mi intencion es recortar el centro de la imagen original en una neva imagen de 244x204. que estoy haciendo mal??
__________________
Mantente al tanto del acontecer Turistico nacional
Visita el Parque Bicentenario El Salvador