Zumbe.net

Comenzando a programar una web

Cambiar el tamaño de imágenes en PHP

A partir del script de Statu he modificado y añadido algunos detalles para mejorarlo.

Código: php
  1. <?
  2.     function redimensionar_imagen($imagen, $nombre_imagen_asociada)
  3.     {
  4.         //indicamos el directorio donde se van a colgar las imágenes
  5.         $directorio = ‘imagenes/’ ;
  6.         //establecemos los límites de ancho y alto
  7.         $nuevo_ancho = 100 ;
  8.         $nuevo_alto = 100 ;
  9.        
  10.         //Recojo información de la imágen
  11.         $info_imagen = getimagesize($imagen);
  12.         $alto = $info_imagen[1];
  13.         $ancho = $info_imagen[0];
  14.         $tipo_imagen = $info_imagen[2];
  15.        
  16.         //Determino las nuevas medidas en función de los límites
  17.         if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
  18.         {
  19.             if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
  20.             {
  21.                 $nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;       
  22.             }
  23.             else
  24.             {
  25.                 $nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);   
  26.             }
  27.         }
  28.         else //si la imagen es más pequeña que los límites la dejo igual.
  29.         {
  30.             $nuevo_alto = $alto;
  31.             $nuevo_ancho = $ancho;
  32.         }
  33.  
  34.         // dependiendo del tipo de imagen tengo que usar diferentes funciones
  35.         switch ($tipo_imagen) {
  36.             case 1: //si es gif …
  37.                 $imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
  38.                 $imagen_vieja = imagecreatefromgif($imagen);
  39.                 //cambio de tamaño…
  40.                 imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  41.                 if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  42.             break;
  43.            
  44.             case 2: //si es jpeg …
  45.                 $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  46.                 $imagen_vieja = imagecreatefromjpeg($imagen);
  47.                 //cambio de tamaño…
  48.                 imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  49.                 if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  50.             break;
  51.            
  52.             case 3: //si es png …
  53.                 $imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
  54.                 $imagen_vieja = imagecreatefrompng($imagen);
  55.                 //cambio de tamaño…
  56.                 imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
  57.                 if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
  58.             break;
  59.         }
  60.         return true; //si todo ha ido bien devuelve true
  61.     }
  62. ?>

Ahora usarlo es muy fácil. Símplemente introducimos la siguiente línea:

Código: php
  1. <?
  2. $imagen = ‘directorio/imagen.jpg’ ;
  3. $nombre_imagen_asociada = ‘nuevo_nombre.jpg’;
  4. redimensionar_imagen($imagen, $nombre_imagen_asociada)
  5. ?>

En el primer parámetro introducimos la dirección donde está la imagen que queremos redimensionar. Algunos servidores permiten que sea una URL(http://pagina.com/imagen.jpg) aunque muchos no lo permiten. En el segundo parámetro escribimos el nombre que queremos poner a la nueva imágen. Aquí ten cuidado con la extensión, tienes que poner la misma que la imagen original (jpg, gif o png)

Atención: Para usar este script necesitas tener en el servidor la librería GD 2.0.1 o superior.

Enlaces:

http://es2.php.net/manual/es/ref.image.php

http://www.boutell.com/gd/

http://www.phpit.net/article/image-manipulation-php-gd-part2/

27 Julio 2006 · Tags Sin categoría |

23 Comentarios

Darktemplar dice:

EXELENTE SOCIO ES LO QUE ANDABA BUSCANDO


17 de Julio del 2007 a las 17:52
Lara dice:

Hola… yo quisiera saber como lo puedo hacer sin utilizar la libreria. O si me podes recomendar algun link.
Gracias


19 de Julio del 2007 a las 19:35
Alex dice:

Lo siento, Lara. La librería es fundamental para manipular imgágenes. Si no la librería GD, cualquier otra; pero PHP de por sí no puede manipular imágenes.

Es como pedirle a un pintor que pinte un cuadro sin pinturas… muy difícil.


19 de Julio del 2007 a las 21:19
john77 dice:

El script es muy útil pero tengo problemas con imágenes mayores a 1024 x 768, en la siguiente línea:
$imagen_vieja=imagecreatefromjpeg($imagen);
Si alguien sabe cómo corregirlo, les agradecería.


9 de Agosto del 2007 a las 16:04
Kevin dice:

La pagina estar disponible a mediados de octubre….WOW esa funcion incrible Solo le di copy y paste y funciono tal como yo queria…..EXELENTE


26 de Septiembre del 2007 a las 20:58
hector dice:

bueno man pero quisiera saber si puedes decirme como coloco esa libreria a mi php o si los programas q tienen todo osea Vertrigo, Appserv, Tomcat ,etc tienen ya ese libreria en especial el Vertrigo gracias de todos modos por este script


31 de Octubre del 2007 a las 21:59
admin dice:

Lo siento, no sabría contestarte. Busca por internet, que seguro que está explicado.

La configuración de servers es algo que escapa de mi conocimiento.


31 de Octubre del 2007 a las 22:03
javivi dice:

Hola buenas, estoy tratando de usar el script pero no me rula.

Cada vez que lo ejecuto me sale un warning diciendome:

Fatal error: Call to undefined function imagecreatetruecolor() in E:\Archivo de programas\apache\htdocs\prueba4\redimensionar.php on line 25

Para poder usar esas opciones hay que hacer algo??

Muchas gracias


8 de Noviembre del 2007 a las 21:38
admin dice:

javivi, necesitas la librería GD en el servidor.

http://www.boutell.com/gd/


8 de Noviembre del 2007 a las 22:08
javivi dice:

Ok entendido, y para instalarla habrai q hacer algo mas que descomentar el php_gd2 del php.ini?


8 de Noviembre del 2007 a las 22:29
admin dice:

No estoy seguro. Depende mucho de cada configuración. Puedes probar a ver si funciona.

De todas formas, yo en servidores no tengo mucha idea, soy sólo programador.


8 de Noviembre del 2007 a las 22:46
Isai dice:

Excelente, lo adapte un poco, pero me gustaria uno que toma una pocion de la foto y la redimensione, para que todas las fotos queden del mismo tamaño, como se haria en ese caso..

GRACIAS TOTALES..!


16 de Noviembre del 2007 a las 18:35
admin dice:

No acabo de entender lo que necesitas. Puedes explicarlo mejor?


16 de Noviembre del 2007 a las 22:14
vjdv dice:

Me gustaria saber como hago para que por ejemplo un usuario cargue una imagen y php guarde cambie el tamaño de la imagen y así la guarde. Es esto posible?


17 de Noviembre del 2007 a las 1:52
claudia dice:

kiero utilizar ese script pero no se como usarlo ya ke en nmi sitio aparece la imagen al tamaño original y me distorciona el diseño de la pag principal alguiem me puede ayudar


28 de Noviembre del 2007 a las 21:14
Luis Cordero dice:

Saludos amigos, quiro dar un pequeño detalle para aquellos que solo copian y pegan, (Es muy sabroso) jejeje… Bueno la diferencia entre el directorio donde esta almacenada la imagen que es /* $imagen = ‘directorio/imagen.jpg’ ; */ y la nueva imagen donde va hacer almacenada la nueva imagen /* $directorio = ‘imagenes/’ ; */ que se encuantra en la linea 6 o 7 o 8 del primer escrip, y por eso no funciona cuando corre porque no se la imagen en dicho directorio o carpeta


6 de Diciembre del 2007 a las 16:12
Malahi dice:

“De todas formas, yo en servidores no tengo mucha idea, soy sólo programador.”

Que patético.


14 de Diciembre del 2007 a las 13:30
Alex Barros dice:

Qué mala leche tienes, Malahi.


14 de Diciembre del 2007 a las 17:30
Malahi dice:

Disculpa amigo ;)


16 de Diciembre del 2007 a las 7:16
salvasi dice:

#Malahi. “Que patético.”

Pues si tanto sabes da la respuesta tú, listillo.


2 de Enero del 2008 a las 22:52
moncho dice:

Impresionante, mil gracias!


22 de Mayo del 2008 a las 15:15
sisilin86 dice:

Buenisimo man, lo que necesita, gracias


11 de Julio del 2008 a las 10:29
Crilin2000 dice:

Muy Buena Función!!!! Gracias!!!


14 de Julio del 2008 a las 23:02

Escribe un comentario!

Buscador

2005-2007 Zumbe.net Creada por Alex Barros con WordPress - Licencia Reconocimiento - RSS