Foros del Web » Programando para Internet » PHP »

Usar libreria gd para redimensionar imagenes.

Estas en el tema de Usar libreria gd para redimensionar imagenes. en el foro de PHP en Foros del Web. Hola que tal, les comento tengo este codigo para subir imagenes, todo bien se hace la insercion a la bd, pero que pasa... me gustaria ...
  #1 (permalink)  
Antiguo 22/04/2010, 08:51
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Usar libreria gd para redimensionar imagenes.

Hola que tal, les comento tengo este codigo para subir imagenes, todo bien se hace la insercion a la bd, pero que pasa... me gustaria poder redimensionar esas imagenes para que se muestren por ejemplo en el perfil. Cómo se podria usar la libreria en este codigo?, o se usa aparte. Alguien podria guiarme?

Gracias de antemano, den_22

Dejo el codigo:

Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3. session_name('pLogin');
  4.  
  5. include("connect.php");
  6.  
  7.  
  8. $id=$_SESSION['id'];
  9.  
  10.  
  11.  define ("MAX_SIZE","500");
  12.  
  13.  
  14.  function getExtension($str) {
  15.          $i = strrpos($str,".");
  16.          if (!$i) { return ""; }
  17.          $l = strlen($str) - $i;
  18.          $ext = substr($str,$i+1,$l);
  19.          return $ext;
  20.  }
  21.  
  22.  
  23.  
  24.  $errors=0;
  25.  
  26.  if(isset($_POST['Submit']))
  27.  {
  28.  
  29.     $image=$_FILES['image']['name'];
  30.  
  31.     if ($image)
  32.     {
  33.  
  34.         $filename = stripslashes($_FILES['image']['name']);
  35.  
  36.         $extension = getExtension($filename);
  37.         $extension = strtolower($extension);
  38.  
  39.  if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
  40.         {
  41.         //print error message
  42.             echo '<h1>No es una imagen!</h1>';
  43.             $errors=1;
  44.         }
  45.         else
  46.         {
  47.  
  48.  
  49.  
  50.  $size=filesize($_FILES['image']['tmp_name']);
  51.  
  52. //comparamos el tamaño definido con este
  53. if ($size > MAX_SIZE*1024)
  54. {
  55.     echo '<h1>Has excedido el limite permitido!</h1>';
  56.     $errors=1;
  57. }
  58.  
  59.  
  60. $image_name=time().'.'.$extension;
  61.  
  62. $newname="images/".$image_name;
  63. //verificamos si se subió la imagen, e imprimimos el error en todo caso
  64. $copied = copy($_FILES['image']['tmp_name'], $newname);
  65. if (!$copied)
  66. {
  67.     echo '<h1>No se ha podido subir la imagen!</h1>';
  68.     $errors=1;
  69. }}}}
  70.  
  71. //Si no hay errores imprimir el mensaje
  72.  if(isset($_POST['Submit']) && !$errors)
  73.  {
  74.     echo "<h1>El archivo subió correctamente</h1>";
  75.     mysql_query("
  76. UPDATE prueba
  77. SET picture='$image_name'
  78. WHERE id='$_SESSION[id]'  ");
  79.  }
  #2 (permalink)  
Antiguo 22/04/2010, 09:07
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 5 meses
Puntos: 32
Respuesta: Usar libreria gd para redimensionar imagenes.

Usa este script, a mi me funciona perfectamente,
modifica los valores $max_upload_width ó $max_upload_height para hacerlo a tu gusto, yo lo tengo que la foto, en este caso un avatar, me salga 200x200.

Código PHP:
<?
$max_upload_width 
200;
$max_upload_height 200;

$remote_file "../fotografias/".$_FILES["imagen"]["name"];  //la ruta donde se encuentra la imagen
                                    
imagejpeg($image_source,$remote_file,100);
chmod($remote_file,0777);


list(
$image_width$image_height) = getimagesize($remote_file);
                                        
if(
$image_width>$max_upload_width || $image_height >$max_upload_height)
    {
        
$proportions $image_width/$image_height;

        if(
$image_width>$image_height){
            
$new_width $max_upload_width;
            
$new_height round($max_upload_width/$proportions);
        }
        else{
            
$new_height $max_upload_height;
            
$new_width round($max_upload_height*$proportions);
        }

        
$new_image imagecreatetruecolor($new_width $new_height);
        
$image_source imagecreatefromjpeg($remote_file);

        
imagecopyresampled($new_image$image_source0000$new_width$new_height$image_width$image_height);
        
imagejpeg($new_image,$remote_file,100);

        
imagedestroy($new_image);
    }

imagedestroy($image_source);
?>
Saludos
  #3 (permalink)  
Antiguo 22/04/2010, 09:08
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Usar libreria gd para redimensionar imagenes.

Tienes un monton de post con tu duda , a ver si alguno soluciona tu problemilla:

http://www.forosdelweb.com/search.php?cx=003443319247910514836%3Ak3yjoy5uums& cof=FORID%3A10&q=redimensionar+imagenes+php&ie=ISO +8859-1&sa=Buscar&siteurl=www.forosdelweb.com%2Fsearch.p hp%3Fsearchid%3D3123891#1120

EDIT: Bueno postearon justo un ejemplo, te dejo la busqueda de todas formas, adiorr
  #4 (permalink)  
Antiguo 22/04/2010, 09:10
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Usar libreria gd para redimensionar imagenes.

Hola gogupe, o sea ese archivo lo pongo en el php que puse mas arriba no?
por ejemplo pongo include("archivo.php"); o lo inserto ahi mismo ?
  #5 (permalink)  
Antiguo 22/04/2010, 10:41
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Usar libreria gd para redimensionar imagenes.

Hola, les muestro en el perfil.php yo tengo este codigo:

Código PHP:
Ver original
  1. if ($picture != "") {
  2.  
  3.     $width1 = 400;
  4.     $height1 = 400;
  5.     $inf = @GetImageSize("images/" . $picture);
  6.     $width2 = $inf[0];
  7.     $height2 = $inf[1];
  8.     $width = $width2;
  9.     $height = $height2;
  10.     if ($width > $width1) {
  11.         $factor = round(($width1 / $width), 2);
  12.         $width = $width1;
  13.         $height = $height * $factor;
  14.         $changed = 1;
  15.     }
  16.     if ($height > $height1) {
  17.         $factor1 = round(($height1 / $height), 2);
  18.         $height = $height1;
  19.         $width = $width * $factor1;
  20.         $changed = 1;
  21.     }

Hasta que punto piensan que es favorable?, el tema es que con ese codigo las imagenes nunca tienen un tamaño fijo por ejemplo de 200 x 200 , sino que cambian de acuerdo al ancho y alto que tengan.

Pero bueno, no comprendi como usar la libreria gd en mi perfil y en el upload, asi que gracias seguiré con este codigo.
  #6 (permalink)  
Antiguo 22/04/2010, 11:14
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 5 meses
Puntos: 32
Respuesta: Usar libreria gd para redimensionar imagenes.

Hola, te pongo el formulario al completo de subir una fotografía, esto lo cogí por ahí de internet

Código PHP:
<? 
if ($_POST[submit]=='Aceptar')
    {
        
$max_upload_width 200
        
$max_upload_height 200

        
// JPG/JPEG
        
if($_FILES["imagen"]["type"] == "image/jpeg" || $_FILES["imagen"]["type"] == "image/pjpeg"){
            
$image_source imagecreatefromjpeg($_FILES["imagen"]["tmp_name"]);

        }
        
// GIF
        
if($_FILES["imagen"]["type"] == "image/gif"){
            
$image_source imagecreatefromgif($_FILES["imagen"]["tmp_name"]);
        }

        
// BMP
        
if($_FILES["imagen"]["type"] == "image/bmp"){
            
$image_source imagecreatefromwbmp($_FILES["imagen"]["tmp_name"]);
        }
        
// PNG
        
if($_FILES["imagen"]["type"] == "image/x-png"){
            
$image_source imagecreatefrompng($_FILES["imagen"]["tmp_name"]);
        }

        
// PNG
        
if($_FILES["imagen"]["type"] == "image/png"){
            
$image_source imagecreatefrompng($_FILES["imagen"]["tmp_name"]);
        }



        
$remote_file "../fotografias/".$_FILES["imagen"]["name"];  //la ruta donde se encuentra la imagen 
                                     
        
imagejpeg($image_source,$remote_file,100); 
        
chmod($remote_file,0777); 

        list(
$image_width$image_height) = getimagesize($remote_file); 
                                         
        if(
$image_width>$max_upload_width || $image_height >$max_upload_height
            { 
                
$proportions $image_width/$image_height

                if(
$image_width>$image_height){ 
                    
$new_width $max_upload_width
                    
$new_height round($max_upload_width/$proportions); 
                } 
                else{ 
                    
$new_height $max_upload_height
                    
$new_width round($max_upload_height*$proportions); 
                } 

                
$new_image imagecreatetruecolor($new_width $new_height); 
                
$image_source imagecreatefromjpeg($remote_file); 

                
imagecopyresampled($new_image$image_source0000$new_width$new_height$image_width$image_height); 
                
imagejpeg($new_image,$remote_file,100); 

                
imagedestroy($new_image); 
            } 

        
imagedestroy($image_source); 
    }    
?>


<form name="subir_imagen" method="POST" enctype="multipart/form-data">

<input type="file" name="imagen">
<input type="submit"  name="submit" value="Aceptar">
</form>
Los valores
$max_upload_width = 200;
$max_upload_height = 200;
Significa que ni el alto ni el ancho va a superar los 200 px, por ejemplo, si una fotografia tiene 800x600, se convertirá en 200x153, pero si es 600x800 se convertira en 153x200... siempre respectado el aspect ratio

Saludos.

Etiquetas: imagenes, libreria, redimensionar
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 04:56.