Foros del Web » Programando para Internet » PHP »

Crear varios thumbnails en php

Estas en el tema de Crear varios thumbnails en php en el foro de PHP en Foros del Web. Hola a todos. En el siguiente código, lo que se hace es enviar una imagen del disco duro, a través de un formulario, a una ...
  #1 (permalink)  
Antiguo 11/01/2007, 02:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 1
Crear varios thumbnails en php

Hola a todos.

En el siguiente código, lo que se hace es enviar una imagen del disco duro, a través de un formulario, a una carpeta específicada. Lo que me gustaria es que además de pasar la imagen , se puedan generar en dicha carpeta otras dos imagenes : una de 400 pixeles de alto (el ancho que sea dependiente del alto) y otra de 80 pixeles de alto. ¿Me podriais indicar como hacerlo?

Os paso el código:
Código PHP:
<?php 
//Cogemos la del formulario
    
$imagen=$HTTP_POST_FILES['imagen']['tmp_name'];
    
$nombre=$HTTP_POST_FILES['imagen']['name'];
    
$size=$HTTP_POST_FILES['imagen']['size'];
    
$tipo=$HTTP_POST_FILES['imagen']['type'];
    
    if(
$nombre==''){
        
$imagen_insertar='';
        
$nombre_insertar='';
        
$size_insertar='';
        
$tipo_insertar='';
    }
    else{
        
$imagen_insertar=$imagen;
        
$nombre_insertar=$nombre;
        
$size_insertar=$size;
        
$tipo_insertar=$tipo;
    }
    
    
//La carpeta donde queremos pasar las 3 imagenes es ./fotos    
    
$destino='./fotos/'.$nombre_insertar;
    
    
//Las copiamos a dicha carpeta
    
is_uploaded_file($imagen_insertar);
    
move_uploaded_file($imagen_insertar,$destino);

            
//Mostramos este alert indicando que todo está bien
    
echo "<script>
    alert(\"Todo Correcto.\");
    location.href=\"./fotos.php\";
    </script>"
;
?>
Espero vuestra ayuda.

Un saludo.
  #2 (permalink)  
Antiguo 11/01/2007, 03:38
 
Fecha de Ingreso: septiembre-2006
Ubicación: Argentina
Mensajes: 190
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Crear varios thumbnails en php

Tenes que usar funciones como "imagecreatefromjpeg" "imagejpeg", pmg, gif etc.

No es tan sencillo y mucho menos el tema del ratio. Busca en google "aspect ratio thumbnail" para que las miniaturas mantengan la relación de aspecto.

Saludos.
__________________
Gustavo
  #3 (permalink)  
Antiguo 11/01/2007, 03:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Crear varios thumbnails en php

ME he bajado el siguiente código, pero no me hace nada. LA imagen original tiene un tamaño de 1184x888, y quiero ponerla con 100 pixeles de alto.

Supuestamente el código me tiene que crear la imagen miniatura.jpg pero no crea nada. ¿Cual es el problema?

Del mismo modo, me gustaria que la creara en una carpeta llamanda miniaturas, ¿Que habria que cambiar?

Gracias.

Código PHP:
<?

function imagen_dimensionar ($origen$destino$ancho_limite$alto_limite)
{
@
mkdir(miniaturas); //Queremos crearlo en la carpeta miniaturas
    
    //respeta el ancho y el alto
    
list($ancho_orig$alto_orig$tipo$atr) = getimagesize($origen);
    
    echo 
"Ancho orig : $ancho_orig, Alto orig = $alto_orig, Tipo : $tipo, Atributo : $atr<br>";

    
//para que no agrande la imagen
    
if ($ancho_orig $ancho_limite$ancho_limite $ancho_orig;
    if (
$alto_orig $alto_limite$alto_limite $alto_orig;

    
$alto_limite_probable $alto_orig $ancho_limite $ancho_orig;
    if (
$alto_limite_probable $alto_limite)
    {
        
$ancho_limite $ancho_orig $alto_limite $alto_orig;
    }
    else
    {
        
$alto_limite $alto_limite_probable;
    }
    return 
imagen($origen$destino$ancho_limite$alto_limite);
}
function 
imagen($origen$destino$ancho$alto)
{
    
$calidad 90;
    
$size getimagesize($origen); //Tomamos la dimension de la imagen  
    
    
$extensiones = array('''gif''jpg''png');
    
    
//obtenemos si el sistema desea obligar a un formato de salida
    
$ext strtolower(substr($destinostrlen($destino)-4));
    
    echo 
"extensiones : $ext<br>";
    switch (
$ext)
    {
        case 
'.gif':
            
$salida_formato 1;
            break;
        case 
'.jpg':
            
$salida_formato 2;
            break;
        case 
'jpeg':
            
$salida_formato 2;
            break;
        case 
'.png':
            
$salida_formato 3;
            break;
        default:
            
$salida_formato $size[2];
            
$destino $destino.'.'.$extensiones[$salida_formato];
    }
    
    
$width $size[0];
    
$height $size[1];
    
$ratio $width/$ancho;
    
$aux_height $height/$ratio;
    
    echo 
"Ancho : $width, Alto : $height, Radio : $ratio, Aux Height : $aux_height<br>";
    
    
$auxiliar $size[2];
    echo 
"... $auxiliar<br>";
    
    
//tomamos el tipo
    
if($size[2]==1){$src = @imagecreatefromgif($origen);}
    if(
$size[2]==2){$src = @imagecreatefromjpeg($origen);}
    if(
$size[2]==3){$src = @imagecreatefrompng($origen);}

    if (!
$src
    {
        return -
1;
    }
    else
    {
        
//Creamos una imagen a color real temporal donde copiamos el original  
        
$aux imagecreatetruecolor($ancho$aux_height);  
        
//Creamos una imagen a color real el cual será el soporte final del resultado  
        
$dst imagecreatetruecolor($ancho$alto);
        
//Copiamos el contenido de la imagen original a la nueva  
        
imagecopyresampled($aux$src0000$ancho$aux_height$width$height);
        
//Pegamos la imagen copiada
        
imagecopy($dst$aux000, ($aux_height-$alto)/2$ancho$alto);  
        
imagedestroy($aux);  

        if(
$salida_formato==1){ imagegif($dst$destino);}
        if(
$salida_formato==2){ imagejpeg($dst$destino$calidad);}
        if(
$salida_formato==3){ imagepng($dst$destino);}

        
imagedestroy($src);
        
imagedestroy($dst);
        return 
$extensiones[$salida_formato];
    }
}

$devuelto imagen_dimensionar("./foto.jpg","./miniatura.jpg",100,100);
echo 
"Devuelto : $devuelto<br>";


?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:41.