Foros del Web » Programando para Internet » PHP »

redimensionar imagen

Estas en el tema de redimensionar imagen en el foro de PHP en Foros del Web. Hola tngo el siguiente script para redimiensionar una imagen, me he leido manuales de la libreria GD pero no lo entiendo muy bien... este script ...
  #1 (permalink)  
Antiguo 13/05/2008, 16:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 4 meses
Puntos: 0
redimensionar imagen

Hola tngo el siguiente script para redimiensionar una imagen, me he leido manuales de la libreria GD pero no lo entiendo muy bien... este script se supone que redimensiona la imagen.. pero como la obtengo? y la guardo en el servidor??
un saludo y gracias de antemano

Código PHP:
   //Obtener datos de la imagen
   
$info getimagesize($_FILES['archivo']['tmp_name']); 
   
//segun el caso sera jpg, gif, png
   
switch ($info[2]) {
  case 
1:
    
$imagen imagecreatefromgif($_FILES['archivo']['tmp_name']); break;
  case 
2:
    
$imagen imagecreatefromjpeg($_FILES['archivo']['tmp_name']); break;
  case 
3:
    
$imagen imagecreatefrompng($_FILES['archivo']['tmp_name']); break;
  
// etcétera // 
  
}

$original $imagen;
// devuelve anchura de la imagen y altura
$original_w imagesx($original);
$original_h imagesy($original);

$max 175;  //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
    
$muestra_w $max;
    
$muestra_h intval(($original_h/$original_w)*$max);
    } else {
    
$muestra_w intval(($original_w/$original_h)*$max);
    
$muestra_h $max;
    }

// Crea una imagen en color real
$muestra imagecreatetruecolor($muestra_w,$muestra_h); 

//Copia y reescala parte de una imagen con remuestreo
imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya 
  #2 (permalink)  
Antiguo 13/05/2008, 16:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: redimensionar imagen

Puedes usar imagepng($muestra, "archivo.png"); para guardarla en algún lugar.

Saludos.
  #3 (permalink)  
Antiguo 13/05/2008, 16:54
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: redimensionar imagen

hola,
yo uso este codigo para subir una foto y guardarla en una carpeta del server y su ruta en la Base de datos, a demas de un titular, resumen y una noticia.

usa la parte del codigo que te haga falta, pero has de tener una Bd de MySQL con lo campos necesarios.


Código PHP:

<?php 
function quitar($mensaje)
{
    
$nopermitidos = array("'",'\\','<','>',"\"",";","$","%","&","/","|","{","}","[","]","+","#");
    
$mensaje str_replace($nopermitidos""$mensaje);
    return 
$mensaje;
}


$nombre_archivo2  quitar($_POST["nombre_archivo2"]);

mysql_connect('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('xxxx')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

if(isset(
$_FILES['fichero']['name'])) {  

   if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
   
   
   
//empieza la redimension, tomamos la imagen temporal subida
   
$info getimagesize($_FILES['fichero']['tmp_name']); 
   
//segun el caso sera jpg, gif, png
   
switch ($info[2]) {
  case 
1:
    
$imagen imagecreatefromgif($_FILES['fichero'] ['tmp_name']); break;
  case 
2:
    
$imagen imagecreatefromjpeg($_FILES['fichero'] ['tmp_name']); break;
  case 
3:
    
$imagen imagecreatefrompng($_FILES['fichero'] ['tmp_name']); break;
  
// etcétera // 
  
}

$original $imagen;
$original_w imagesx($original);
$original_h imagesy($original);

$max 175;  //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
    
$muestra_w $max;
    
$muestra_h intval(($original_h/$original_w)*$max);
    } else {
    
$muestra_w intval(($original_w/$original_h)*$max);
    
$muestra_h $max;
    }

$muestra imagecreatetruecolor($muestra_w,$muestra_h); 

imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya


//imagedestroy($muestra);





   
   
   
    
    
     // me verifica haya sido cargado el archivo 
        
$ruta_destino "../carpeta/archivos/";
        
$namefinaltrim ($_FILES['fichero']['name']);//quito espacios finales o al principio del nombre si los hay
        
$namefinalereg_replace (" """$namefinal);//quito los espacios entre las palabtas del nombre si los hay
        
$uploadfile$ruta_destino $namefinal;
        if(
imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final 
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
            echo 
"Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['fichero']['name']."</a></i><br>"
            echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                        echo 
"<br><hr><br>"
                      


                        
// Aqui es donde tendre que insertar en la BD la variable $namefinal que con tiene el nombre del archivo sin espacios
$titular  quitar($_POST["titular"]);
$resumen  quitar($_POST["resumen"]);
$noticia1  quitar($_POST["noticia"]);
$noticia quitar($noticia1); 
$noticia $noticia//cambiar el nl2br a la salida del texto mejor, y no a la entrada para inform. excell





$fecha  $_POST["fecha"];

 

$query "INSERT INTO noticias (titular, resumen, noticia, imagen, fecha)
    VALUES ('$titular', '$resumen' , '$noticia', '$namefinal','$fecha')"
;
                
mysql_query($query) or die(mysql_error());
                
                
 
    
                

                
                
                echo 
"La noticia <b>'".$titular."'</b>  ha sid registrados de manera satisfactoria.<br />";
                  echo 
"<br><hr><br>";
            
                
                

        
        
                

}else{echo 
"no se guardo la foto, ni se inserto el articulo en la Base de Datos";}
}else{echo 
"no se subio foto";}
}else{echo 
"no se selecciono la foto";}


 

?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    <p>Imagen noticia 1: 
      <input name="fichero" type="file" size="150" maxlength="150"> 
      <br> 
      Titular: 
      <input name="titular" type="text" size="46" maxlength="45" id="titular" >
  </p>
    <p>Resumen 
      <label>
      <input name="resumen" type="text" id="resumen" size="150" maxlength="300">
      </label>
  </p>
    <p><br> 
      Noticia:
      <label>
      <textarea name="noticia" id="noticia" cols="100" rows="20"></textarea>
          </label>
    </p>
    <p>
      <input type="hidden" name="fecha" id="fecha" value="<?php echo date("d-m-Y");?>">
      <label></label>
      <br>
      </p>
    <p><br>
      <input name="submit" type="submit" value="Upload!">  
  </p>
</form> </body>
Espero que te sirva.
un saludo
  #4 (permalink)  
Antiguo 13/05/2008, 19:43
isra00
Invitado
 
Mensajes: n/a
Puntos:
Re: redimensionar imagen

Lo has hecho bien, ahora para guardar la imagen debes usar imagepng(), imagejpeg() ó imagegif() según el caso, pasándole como primer parámetro el recurso de imagen ($muestra) y como segundo parámetro (opcional) el nombre del archivo al que deseas que se vuelque la imagen. Si no le pasas ese parámetro, volcará la imagen a la salida del script.
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 19:10.