Foros del Web » Programando para Internet » PHP »

Redimensionar imagen a dos tamaños distintos

Estas en el tema de Redimensionar imagen a dos tamaños distintos en el foro de PHP en Foros del Web. Hola, tengo una función que redimensiona la imagen que el usuario suba a un tamaño estipulado, el caso es que he hecho una galería para ...
  #1 (permalink)  
Antiguo 03/08/2012, 06:09
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Redimensionar imagen a dos tamaños distintos

Hola, tengo una función que redimensiona la imagen que el usuario suba a un tamaño estipulado, el caso es que he hecho una galería para ver las fotos del user y me ha creado la necesidad de tener la imagen en tamaño thumbnail (o un tamaño parecido) y a un tamaño grande como 700x600. Para ello necesito una función que al redimensionar la imagen lo haga en dos tamaños y lo guarde con dos rutas distintas claro. Mi función para redimensionar la imagen que uso actualmente es esta y he intentado repetir el código con gracia pero me da errores.

Código PHP:
<?php

include('config.php');

$correouser=$ifilter->process($_SESSION['correo']);
?>

<?php

if(isset($_SESSION['correo'])){

$conexion=conectar();
$comprobacion mysql_query("SELECT * FROM registrados WHERE correo='".mysql_real_escape_string($correouser)."'",$conexion) or die ("Query Fallo".mysql_error());
if( 
mysql_num_rows($comprobacion) ) {
            
$row mysql_fetch_array($comprobacion);
        
$nombresesion $row["nombre"];
$apellidossesion $row["apellidos"]; 
$idsesion $row["id"];
}
 
 
?>

<div id="menu" class="menu" >
<input type="button" class="bmenu" onclick="location.href='miperfil.php'" value="Vipefy" />
<input type="button" class="bmenu" onclick="location.href='amigos.php'" value=" Mis amigos" />
<input type="button" class="bmenu" onclick="location.href='destruir.php'" value="Desconexión" />
<input type="button" class="bmenu" onclick="location.href='mensajes.php'" value="Mensajes" />
<input type="button" class="bnombre" value="<?php echo $nombresesion." ".$apellidossesion ?>" />
<input type="button" class="bmenuamis" onclick="location.href='newfriends.php'" value="Encontrar amistades" />
</div>
 
 <?php
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];    
    
$archivo $_FILES["archivo"]['name'];
    
$prefijo $idsesion;
   
    if (
$archivo != "") {
        
// guardamos el archivo a la carpeta imagenes
        
$destino ='imagenes/'.$prefijo."_".$archivo;
    





        
        if (
copy($_FILES['archivo']['tmp_name'],$destino)) {

            
$status "";
        
        
$query "INSERT INTO imagenes (usuario, ruta) ";
$query.="VALUES ('".mysql_real_escape_string($idsesion)."' , '".mysql_real_escape_string($destino)."') ";
$resultado mysql_query($query$conexion) or die(mysql_error());
    
    
$result mysql_query("SELECT * FROM imagenes WHERE usuario='".mysql_real_escape_string($idsesion)."'"$conexion); 
$row mysql_fetch_array($result); 

$ruta$row["ruta"];
 
echo 
"<br><img src='".$ruta."' title='imagen'>"
    
    
//Creamos una variable imagen a partir de la imagen original
    
$img_original imagecreatefromjpeg($ruta);
    
    
//Se define el maximo ancho o alto que tendra la imagen final
    
$max_ancho 300;
    
$max_alto 300;
    
    
//Ancho y alto de la imagen original
    
list($ancho,$alto)=getimagesize($ruta);
    
    
//Se calcula ancho y alto de la imagen final
    
$x_ratio $max_ancho $ancho;
    
$y_ratio $max_alto $alto;
    
    
//Si el ancho y el alto de la imagen no superan los maximos, 
    //ancho final y alto final son los que tiene actualmente
    
if( ($ancho <= $max_ancho) && ($alto <= $max_alto) ){//Si ancho 
        
$ancho_final $ancho;
        
$alto_final $alto;
    }
    
/*
     * si proporcion horizontal*alto mayor que el alto maximo,
     * alto final es alto por la proporcion horizontal
     * es decir, le quitamos al alto, la misma proporcion que 
     * le quitamos al alto
     * 
    */
    
elseif (($x_ratio $alto) < $max_alto){
        
$alto_final ceil($x_ratio $alto);
        
$ancho_final $max_ancho;
    }
    
/*
     * Igual que antes pero a la inversa
    */
    
else{
        
$ancho_final ceil($y_ratio $ancho);
        
$alto_final $max_alto;
    }
    
    
//Creamos una imagen en blanco de tamaño $ancho_final  por $alto_final .
    
$tmp=imagecreatetruecolor($ancho_final,$alto_final);    
    
    
//Copiamos $img_original sobre la imagen que acabamos de crear en blanco ($tmp)
    
imagecopyresampled($tmp,$img_original,0,0,0,0,$ancho_final$alto_final,$ancho,$alto);
    
    
//Se destruye variable $img_original para liberar memoria
    
imagedestroy($img_original);
    
//Definimos la calidad de la imagen final
$calidad=95;
//Se crea la imagen final en el directorio indicado
?>
<br/><br/>Así es como se verá la imágen en tu página de perfil.
<?php
imagejpeg
($tmp,'imagenes/'.$prefijo."_".$archivo,$calidad);
    
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
He estado buscando en google pero no encuentro lo que requiero, a ver si me podéis ayudar, muchas gracias!
  #2 (permalink)  
Antiguo 03/08/2012, 07:15
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Redimensionar imagen a dos tamaños distintos

te recomiendo usar esta clase, es muy buena y facil de usar.

http://www.verot.net/php_class_upload.htm
  #3 (permalink)  
Antiguo 03/08/2012, 07:36
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Redimensionar imagen a dos tamaños distintos

Te agradezco el interés pero no sé utilizar los objetos, todavía no he llegado a ese nivel de php...
  #4 (permalink)  
Antiguo 03/08/2012, 07:46
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Redimensionar imagen a dos tamaños distintos

pues si quieres te doy unas clases, es super sencillo ademas que te ahorras muchos dolores de cabeza y tiempo.
  #5 (permalink)  
Antiguo 03/08/2012, 09:08
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Redimensionar imagen a dos tamaños distintos

He estado leyendo y creo que también hay otro método que sería guardar la imágen en tamaño original y al mostrarla, redimensionarla. Es eso cierto?

Etiquetas: distintos, imagenes, mysql, redimensionar, sql, tamaños, variables, usuarios
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 23:36.