Ver Mensaje Individual
  #7 (permalink)  
Antiguo 30/03/2009, 05:25
Kristt
 
Fecha de Ingreso: diciembre-2008
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Problema para crear Thumbnails

Código PHP:
<?php
//En el primer parámetro introducimos la dirección donde está la imagen que queremos redimensionar. 
//Algunos servidores permiten que sea una URL aunque muchos no lo permiten. 
//En el segundo parámetro escribimos el nombre que queremos poner a la nueva imágen. 
//Aquí ten cuidado con la extensión, tienes que poner la misma que la imagen original (jpg, gif o png)

function redimensionar_imagen($imagen$nombre_imagen_asociada)
    {
        
$nuevo_ancho=150//valores que se pueden cambiar
        
$nuevo_alto=100//por ejemplo
        
$directorio=""//por si se quiere alojar en algun directorio determinado
        //Recojo información de la imágen
        
$info_imagen getimagesize($imagen);
        
$alto $info_imagen[1];
        
$ancho $info_imagen[0];
        
$tipo_imagen $info_imagen[2];
       
        
//Determino las nuevas medidas en función de los límites
        
if($ancho $nuevo_ancho OR $alto $nuevo_alto)
        {
            if((
$alto $nuevo_alto) > ($ancho $nuevo_ancho))
            {
                
$nuevo_ancho round($ancho $nuevo_alto $alto,0) ;       
            }
            else
            {
                
$nuevo_alto round($alto $nuevo_ancho $ancho,0);   
            }
        }
        else 
//si la imagen es más pequenia que los límites la dejo igual.
        
{
            
$nuevo_alto $alto;
            
$nuevo_ancho $ancho;
        }
 
        
// dependiendo del tipo de imagen tengo que usar diferentes funciones
        
switch ($tipo_imagen) {
            case 
1//si es gif …
                
$imagen_nueva imagecreate($nuevo_ancho$nuevo_alto);
                
$imagen_vieja imagecreatefromgif($imagen);
                
//cambio de tamaño…
                
imagecopyresampled($imagen_nueva$imagen_vieja0000$nuevo_ancho$nuevo_alto$ancho$alto);
                if (!
imagegif($imagen_nueva$directorio $nombre_imagen_asociada)) return false;
            break;
           
            case 
2//si es jpeg …
                
$imagen_nueva imagecreatetruecolor($nuevo_ancho$nuevo_alto);
                
$imagen_vieja imagecreatefromjpeg($imagen);
                
//cambio de tamaño…
                
imagecopyresampled($imagen_nueva$imagen_vieja0000$nuevo_ancho$nuevo_alto$ancho$alto);
                if (!
imagejpeg($imagen_nueva$directorio $nombre_imagen_asociada)) return false;
            break;
           
            case 
3//si es png …
                
$imagen_nueva imagecreatetruecolor($nuevo_ancho$nuevo_alto);
                
$imagen_vieja imagecreatefrompng($imagen);
                
imageAlphaBlending($imagen_nuevafalse);
                
imageSaveAlpha($imagen_nuevatrue); 
                
//cambio de tamaño…
                
imagecopyresampled($imagen_nueva$imagen_vieja0000$nuevo_ancho$nuevo_alto$ancho$alto);
                if (!
imagepng($imagen_nueva$directorio $nombre_imagen_asociada)) return false;
            break;
        }
        return 
true//si todo ha ido bien devuelve true
    
}
?>
Esta funcion es d elo mejorcito para hacer tumbs y no emplear muchos recursos en realizarlo.

De todos modos y postee los problemas ue presenta la libreria GD en su ultima version.

Lo mas importante a valorar en el aspecto de usar GD es si las imagenes que se van a redimensionar las suben usuarios de la web(cualquiera), o las subes tu.

Si eres tu el que las sube no creo que haya problema, pero si las imagenes provienen de distintas camaras de foros, moviles, .... algunas pueden presentar fayos que no asume la libreria GD, en ese caso seria recomendable usar imagemagick para este tipo de cosas