Foros del Web » Programando para Internet » PHP »

Redimensionar imagen PHP

Estas en el tema de Redimensionar imagen PHP en el foro de PHP en Foros del Web. Saludos!! Tengo un chat (basado en php free chat) y en el, tengo puesta una función que recoge los links de imágenes que se pongan ...
  #1 (permalink)  
Antiguo 28/06/2012, 14:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Redimensionar imagen PHP

Saludos!! Tengo un chat (basado en php free chat) y en el, tengo puesta una función que recoge los links de imágenes que se pongan en la línea de chat, y en lugar del link saca la imagen.

Todo va bien, pero cuando alguien pone una imagen demasiado grande, el servidor se ve saturado.

Necesito programar una función en PHP que recoja el link de una imagen, la redimensione, y devuleva una ruta o algo, con la imagen nueva, para poder mostrarla en la ventana de chat tipo "<img src=>"

A ver si alguien me puede ayudar o indicar como puedo hacerlo.

¡¡¡Desde ya mil gracias!!!
  #2 (permalink)  
Antiguo 28/06/2012, 16:07
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Redimensionar imagen PHP

En la seccion de aportes amigo...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 28/06/2012, 18:26
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Redimensionar imagen PHP

no seria mejor que lo manejaras con CSS? digo, para hacer lo que pretendes primero deberás descargar la imagen a tu servidor, redimencionar y luego mostrarla, con css puedes indicar un máximo para ancho y alto, si las imagenes son menores se mostrarán con su tamaño original, si son mas grandes el css obligará a las imagenes redimecionarse al tamaño máximo permitido...

Código CSS:
Ver original
  1. img {
  2.    max-width: 400px;
  3.    max-height: 400px;
  4. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 29/06/2012, 14:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Redimensionar imagen PHP

Cita:
Iniciado por Nemutagk Ver Mensaje
no seria mejor que lo manejaras con CSS? digo, para hacer lo que pretendes primero deberás descargar la imagen a tu servidor, redimencionar y luego mostrarla, con css puedes indicar un máximo para ancho y alto, si las imagenes son menores se mostrarán con su tamaño original, si son mas grandes el css obligará a las imagenes redimecionarse al tamaño máximo permitido...

Código CSS:
Ver original
  1. img {
  2.    max-width: 400px;
  3.    max-height: 400px;
  4. }
Acabo de intentarlo amigo y sigue dandome problemas con imágenes grandes. Necesito procesarlas en el servidor antes de enviarlas a los clientes, o sino da problemas.

Gracias no obstante por la ayuda.

Que post de la sección de aportes me puede servir de ayuda para recoger un link de imagen y devolverla redimensionada también por medio de link??

¿Alguna otra ayuda?
  #5 (permalink)  
Antiguo 05/07/2012, 15:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Redimensionar imagen PHP

mmm puedes hacer algo así...

Código PHP:
Ver original
  1. $archivo = $_POST['imagen'];
  2.             $info = explode('/',$archivo);
  3.             $nombre = $info[count($info)-1];
  4.             $path = 'imagenes/';
  5.             $file = $path.$nombre;
  6.  
  7.             $maxHeight = isset($_POST['maxheight']) ? $_POST['maxheight'] : 400;
  8.             $maxWidth = isset($_POST['maxwidth']) ? $_POST['maxwidth'] : 400;
  9.  
  10.             $contenido = file_get_contents($archivo);
  11.  
  12.             if (file_put_contents($file,$contenido) !== false) {
  13.                 list($ancho,$alto,$tipo,$atributos) = getimagesize($file);
  14.                  
  15.                 $imagen = '';
  16.  
  17.                 if (!file_exists($file)) {
  18.                     die('El archivo no existe');
  19.                 }
  20.  
  21.                 switch($tipo) {
  22.                     case IMAGETYPE_GIF:
  23.                     $imagen = imagecreatefromgif($file);
  24.                     echo '<p>crear imagen desde gif</p>';
  25.                     break;
  26.                     case IMAGETYPE_JPEG:
  27.                     $imagen = imagecreatefromjpeg($file);
  28.                     echo '<p>crear imagen desde jpeg</p>';
  29.                     break;
  30.                     case IMAGETYPE_PNG:
  31.                     $imagen = imagecreatefrompng($file);
  32.                     echo '<p>crear imagen desde png</p>';
  33.                     break;
  34.                 }
  35.  
  36.                 if (empty($imagen)) {
  37.                     die('no se creo la imagen');
  38.                 }
  39.  
  40.                 $ratio = $ancho/$alto;
  41.  
  42.                 if (($maxWidth / $maxHeight) < $ratio) {
  43.                     $newWidth = ceil($maxHeight * $ratio);
  44.                     $newHeight = $maxHeight;
  45.                 }else {
  46.                     $newWidth = $maxWidth;
  47.                     $newHeight = ceil($maxWidth * $ratio);
  48.                 }
  49.  
  50.                 if ($newWidth != 0 && $newHeight != 0) {
  51.                     $newImg = imagecreatetruecolor($newWidth, $newHeight);
  52.                     echo '<p>Porcentaje: '.$por.' - Ancho: '.$newWidth.' - Alto: '.$newHeight.'</p>';
  53.                     imagecopyresampled($newImg, $imagen, 0, 0, 0, 0, $newWidth, $newHeight, $ancho, $alto);
  54.                     $nombre = substr($nombre, 0, strpos($nombre,'.')).'.jpg';
  55.  
  56.                     switch($tipo) {
  57.                         case IMAGETYPE_GIF:
  58.                         imagegif($newImg,$path.$nombre);
  59.                         break;
  60.                         case IMAGETYPE_JPEG:
  61.                         imagejpeg($newImg,$path.$nombre,80);
  62.                         break;
  63.                         case IMAGETYPE_PNG:
  64.                         imagepng($newImg,$path.$nombre);
  65.                         break;
  66.                     }
  67.  
  68.                     imagedestroy($newImg);
  69.  
  70.                     echo '<p><img src="'.$path.$nombre.'" /></p>';
  71.                 }else {
  72.                     echo 'el tama&ntilde;o es impreciso';
  73.                 }
  74.             }else {
  75.                  echo 'No se pudo crear la imagen';
  76.             }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 06/07/2012, 15:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Redimensionar imagen PHP

mmmm tiene muy buena pinta ese código!! desde ya mil gracias, voy a pasar a intentar implemetarlo en mi sitio web. Mis más sinceros agradecimientos.
  #7 (permalink)  
Antiguo 11/07/2012, 11:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Redimensionar imagen PHP

Yo lo que necesito es un script que trabaje con URLS, no con archivos de imagenes guardados de forma local en mi servidor.

Es fácil: La función recibe una URL de imagen, redimensiona la imagen, y devuelve la URL de la imagen redimensionada.

¿Alguien sabe como hacer esto? Ayuda por favor.
  #8 (permalink)  
Antiguo 11/07/2012, 11:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Redimensionar imagen PHP

No puedes hacer eso, tienes que forzoso primero descargar la imagen a tu servidor, y luego hacer la redimension, y después armar la nueva URL usando el sitio donde hayas guardado la imagen.

Es decir el proceso es:

1.- Descargas la imagen desde la URL que dices.
2.- La guardas en un directorio ej: imagenes/descargadas
3.- Aplicas la redimension
4.- Armas la nueva URL usando la carpeta ej http://tuhost/imagenes/descargadas (es decir no puedes servir la imagen desde su URL original).

Saludos.
  #9 (permalink)  
Antiguo 12/07/2012, 10:13
 
Fecha de Ingreso: noviembre-2007
Mensajes: 25
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Redimensionar imagen PHP

Cita:
Iniciado por GatorV Ver Mensaje
No puedes hacer eso, tienes que forzoso primero descargar la imagen a tu servidor, y luego hacer la redimension, y después armar la nueva URL usando el sitio donde hayas guardado la imagen.

Es decir el proceso es:

1.- Descargas la imagen desde la URL que dices.
2.- La guardas en un directorio ej: imagenes/descargadas
3.- Aplicas la redimension
4.- Armas la nueva URL usando la carpeta ej [url]http://tuhost/imagenes/descargadas[/url] (es decir no puedes servir la imagen desde su URL original).

Saludos.
Gracias por tu mensaje, me ha gustado. :)

El problema que yo le veo a esto es que la imagen original, la borraré de mi server una vez redimensionada. Sin embargo la imagen redimensionada, la muestro y ¿Qué hago con ella? La idea es que las imagenes redimensionadas se vayan borrando cada cierto tiempo para no acumular muchas en mi servidor.
  #10 (permalink)  
Antiguo 12/07/2012, 11:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Redimensionar imagen PHP

Puedes usar un CronJob que lea la fecha de creación de cada imagen, y borre las que sean mayor a X días, no hay mucho problema con ello.

Saludos.

Etiquetas: 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 03:41.