Foros del Web » Programando para Internet » PHP »

Subir Imagen Redimensionada Al Servidor con php

Estas en el tema de Subir Imagen Redimensionada Al Servidor con php en el foro de PHP en Foros del Web. El problema es el siguiente, tengo un script en el que el que he estado trabajando que funciona de la siguiente forma 1.- recibe unas ...
  #1 (permalink)  
Antiguo 12/04/2007, 00:43
 
Fecha de Ingreso: enero-2007
Mensajes: 21
Antigüedad: 17 años, 3 meses
Puntos: 1
Subir Imagen Redimensionada Al Servidor con php

El problema es el siguiente, tengo un script en el que el que he estado trabajando que funciona de la siguiente forma
1.- recibe unas imagenes elegidas mediante un formulario
2.-almacena las imagenes en un directorio del servidor
3.- genera el respectivo thumbnail de cada imagen para esto utiliza la direccion del directorio del servidor donde se almaceno la imagen original
4.-almacena los nombres de las imagenes originales y de los thumbnails en campos de tipo texto en la base de datos.
El script funciona perfectamente lo he probado en el servidor local de mi pc y en la web, el problema es que hasta ahora solo habia trabajado con imagenes de 640x480 como maximo, y si bien funciona con imagenes mas grandes el subir imagenes de mayor tamaño mediante el script tarda demasiado mas si aun si mediante el formulario se eligieron mas de una imagen y aparte trabajar con imagenes tan grandes en la web no es muy aconsejable.
Lo que quiero es saber como deberia modificar el script para que si mediante el formulario s elecciono imagenes que son mayores a 640x480, redimensione dicha inagen a 640x480 y almacene esta imagen redimensionada en el servidor sin subir la imagen original (la que es mayor a 640x480), una vez realizado esto podria continuar a partir del paso 3 del script.
la idea es que cualquier persona pueda actualizar la pagina sin que tenga que utilzar otros programas para redimensionar las imagenes antes de subirlas mediante el script.
Estos son los codigos con los que estoy trabajando
Este es parte del codigo del formulario para elegir las imagenes:

Código:
.....
<input type=file name="images[]"> <br>
<input type=file name="images[]"> <br>
.....
<input type="submit" name="s1" value="Enviar">
</form>
Este es el codigo del script que recibe los datos del formulario
Código:
include("redimensionar.php"); //script que contiene la funcion para generar los thumbnails
$cont=1;

if(isset($_POST[s1]))
{
    if(!empty($_FILES[images][name][0]))
    {
       while(list($key,$value) = each($_FILES[images][name]))
       {
           if(!empty($value))
           {
               //renombra la imagen
               $NewImageName = $t."_pic_".$value;

               //almacena la imagen en el directorio fotos
               copy($_FILES[images][tmp_name][$key], "../fotos/".$NewImageName);

              //almacena el nombre de la imagen
              $MyImages[] = $NewImageName;

             //ubicacion de la imagen original para usar en la funcion que genera el thumbnail
             $imagen= "../fotos/".$NewImageName;

             //nombre para el thumbnail para usar en la funcion que lo genera
             $nombre_imagen_asociada=$cont.$NewImageName;

             //llamada a la funcion que genera el thumbnail
             $redim=redimensionar_imagen($imagen, $nombre_imagen_asociada);

             almacena el nombre del thumbnail
             $MyThumbs[]=$nombre_imagen_asociada;
             $cont++;

          }
       }

       //una vez que se cierra el ciclo
       //se almacenan los nombres de todas las imagenes originales en una cadena
       //esta cadena quedaria mas o menos asi: foto1.jpg|foto2.jpg|foto3.jpg etc
      if(!empty($MyImages))
      {
         $ImageStr = implode("|", $MyImages);
      }

       //se almacenan los nombres de los thumbnails de la misma forma que los  nombres de las imagenes originales
      if(!empty($MyThumbs))
      {
         $ThumbStr= implode("|" , $MyThumbs);
       }

    }
    //finalmente se almacenan en campos de tipo texto en la base de datos de esta forma
    $sql="Insert into tabla set image='$ImageStr ' , thumb='$ThumbStr' ";
}
el codigo de la funcion que genera los thumbnails es el siguiente por si es necesario solo se deben especificar el directorio
donde se almacenaran los thumbnails y las dimensiones de estos
Código:
function redimensionar_imagen($imagen, $nombre_imagen_asociada)
{
//indicamos el directorio donde se van a colgar las imágenes
$directorio = "../thumbnails/" ;
//establecemos los límites de ancho y alto
$nuevo_ancho = 115 ;
$nuevo_alto = 86 ;


//Recojo información de la imágen
$info_imagen = getimagesize($imagen);
$alto = $info_imagen[1];
$ancho = $info_imagen[0];
$tipo_imagen = $info_imagen[2];

//Determino las nuevas medidas en función de los límites
if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
{
if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
{
$nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
}
else
{
$nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
}
}
else //si la imagen es más pequeña que los límites la dejo igual.
{
$nuevo_alto = $alto;
$nuevo_ancho = $ancho;
}

// dependiendo del tipo de imagen tengo que usar diferentes funciones
switch ($tipo_imagen) {
case 1: //si es gif ...
$imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromgif($imagen);
//cambio de tamaño...
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;

case 2: //si es jpeg ...
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromjpeg($imagen);
//cambio de tamaño...
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;

case 3: //si es png ...
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefrompng($imagen);
//cambio de tamaño...
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
}
return true; //si todo ha ido bien devuelve true
}
Espero no haber sido muy confuso en mi explicacion y que puedan ayudarme
  #2 (permalink)  
Antiguo 21/04/2007, 09:37
 
Fecha de Ingreso: enero-2007
Mensajes: 21
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Subir Imagen Redimensionada Al Servidor con php

Ninguna sugerencia? es que es importante
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

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




La zona horaria es GMT -6. Ahora son las 22:55.