Foros del Web » Programando para Internet » PHP »

Como redimensionar imagenes con php

Estas en el tema de Como redimensionar imagenes con php en el foro de PHP en Foros del Web. Hola, resulta que tengo una web en la que los usuarios pueden subir imagenes. Lo que ocurre es que me gustaria limitar el tamaño de ...
  #1 (permalink)  
Antiguo 09/03/2008, 17:12
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Como redimensionar imagenes con php

Hola,
resulta que tengo una web en la que los usuarios pueden subir imagenes. Lo que ocurre es que me gustaria limitar el tamaño de las imagenes en el disco duro del servidor sin tener que obligar al usuario a redimensionar sus imagenes (sobre todo porque hay usuarios inexpertos que no sabrian hacer esto). Lo que quisiera es que una vez el usuario haya introducido la imagen en el formulario y haya hecho "submit", un script se encargue de comprobar su tamaño en kb, y redimensionarla en caso de que ocupe mas que un valor prefijado, antes de insertarla en la base de datos. El tema de comprobar si su tamaño en kb excede el valor prefijado, ya lo tengo claro. Lo que necesitaria ahora es saber que funciones deberia usar para redimensionar dicha imagen de modo que su tamaño sea inferior al mencionado valor. Por supuesto me gustaria que funcionase para cualquier formato de imagen, si es posible.
¿Alguna idea?

Gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 09/03/2008, 17:27
 
Fecha de Ingreso: enero-2008
Mensajes: 132
Antigüedad: 16 años, 3 meses
Puntos: 6
Re: Como redimensionar imagenes con php

Código PHP:
<?
    $tam
=getimagesize("imagen.png"); 
    if(
$tam[0] > 500 OR $tam[1] > 500)
        {
        
cambiartam("imagen.png""nuevaimagen.png"200200);
        }

function 
cambiartam($nombre,$archivo,$ancho,$alto)
    {
    
$tmp=split(".",$nombre)[1];

    if (
preg_match('/jpg|jpeg|JPG/',$tmp))
        {
        
$imagen=imagecreatefromjpeg($nombre);
        }
    if (
preg_match('/png|PNG/',$tmp))
        {
        
$imagen=imagecreatefrompng($nombre);
        }
    if (
preg_match('/gif|GIF/',$tmp))
        {
        
$imagen=imagecreatefromgif($nombre);
        }

    
$x=imageSX($imagen);
    
$y=imageSY($imagen);

    if (
$x $y
        {
        
$w=$ancho;
        
$h=$y*($alto/$x);
        }

    if (
$x $y
        {
        
$w=$x*($ancho/$y);
        
$h=$alto;
        }

    if (
$x == $y
        {
        
$w=$ancho;
        
$h=$alto;
        }


    
$destino=ImageCreateTrueColor($w,$h);
    
imagecopyresampled($destino,$imagen,0,0,0,0,$w,$h,$x,$y); 


    if (
preg_match("/png/",$tmp))
        {
        
imagepng($destino,$archivo); 
        } 
    if (
preg_match("/gif/",$tmp))
        {
        
imagegif($destino,$archivo);
        }
    else 
        {
        
imagejpeg($destino,$archivo); 
        }

    
imagedestroy($destino); 
    
imagedestroy($imagen); 
}

?>
  #3 (permalink)  
Antiguo 10/03/2008, 16:43
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Como redimensionar imagenes con php

Hola, te agradezco tu respuesta.
Tengo una duda, encontre el siguiente codigo en la documentacion de PHP:

Código PHP:
<?php
// Variables que indican el archivo de la imagen y el nuevo tamano
$filename 'test.jpg';
$percent 0.5;

// Content-type para el navegador
header('Content-type: image/jpeg');

// Se obtienen las nuevas dimensiones
list($width$height) = getimagesize($filename);
$newwidth $width $percent;
$newheight $height $percent;

// Cargar la imagen
$thumb imagecreate($newwidth$newheight);
$source imagecreatefromjpeg($filename);

// Redimensionar
imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

// Mostrar la nueva imagen
imagejpeg($thumb);
?>
He intentado implementar este, por parecerme mas sencillo que el tuyo, pero no he conseguido que funcione. Podrias indicarme porque puede ser esto, y cual es la diferencia entre el tuyo y este?

Gracias otra vez.

Saludos.
  #4 (permalink)  
Antiguo 10/03/2008, 18:20
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Como redimensionar imagenes con php

En realidad son dos aplicaciones algo distintas de lo mismo, las librerías GD con las que se trabajan las imágenes, en el primer caso la cosa es más precisa, redimensiona las imágenes para que sean menores a 500 píxeles, tanto el ancho como el alto, pero en segundo caso, lo que hace es reducir a la mitad las dimensiones de una imagen. Me parece que en todo caso el primer codigo es el adecuado para tu problema. Ah y si no funciona puede ser cosa de que tu servidor no tenga habilitadas el soporte de las liberías GD.
  #5 (permalink)  
Antiguo 10/03/2008, 18:30
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Como redimensionar imagenes con php

Ok, pues seguire probando.
El servidor deberia tenerlo habilitado (digo deberia porque es una cuenta de reseller bastante importante), no obstante, como puedo mirar si tiene soporte o no?
Por ultimo, la funcion imagejpeg (y la de png y las otras), digamos que crea el archivo jpeg a partir de una imagen que se le pasa como parametro. Esta funcion devuelve un valor? o es de tipo void y simplemente modifica el parametro que se le pasa?

Gracias.
Saluos.
  #6 (permalink)  
Antiguo 10/03/2008, 18:45
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Re: Como redimensionar imagenes con php

para saber si tiene habilitado crea una pag php y dentro pon la instrucion
<?php phpinfo(); ?>

ejecutalo en tu servidor y vas a aver los modulos que tiene instalado si es el caso te va a aparecer GD, y si no aparece pues no lo tiene :(
__________________
Drupal Argentina
  #7 (permalink)  
Antiguo 10/03/2008, 21:00
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Re: Como redimensionar imagenes con php

Lea este tutorial... es muy bueno y tendrás una idea más clara el por que usar este tipo de algoritmo.-
http://www.washeebo.com/sargento/03_php/0324/0324.php


Saludos.-

__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #8 (permalink)  
Antiguo 14/03/2008, 11:56
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Como redimensionar imagenes con php

Hola,
muchas gracias por el documento. lo he estado leyendo y voy a intentar ponerlo en practica.

Saludos.
  #9 (permalink)  
Antiguo 14/03/2008, 13:50
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Como redimensionar imagenes con php

Gracias, con el enlace que me has pasado lo he resuelto porque esta muy bien explicado.

Saludos.
  #10 (permalink)  
Antiguo 15/12/2008, 10:07
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
Respuesta: Como redimensionar imagenes con php

como podría modificar esta parte:

if ($x < $y)
{
$w=$x*($ancho/$y);
$h=$alto;
}

para que el ancho sea fijo y lo que se reduzca sea la anchura?
__________________
ALOZORRO v5.0 (ahora en .es)
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:36.