Ver Mensaje Individual
  #7 (permalink)  
Antiguo 25/10/2007, 06:49
yllelder
 
Fecha de Ingreso: octubre-2007
Ubicación: Dentro de un <div>
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo Re: Subir imagen y crear thumbnail en un mismo script

Lo tengo !!!

Al fin, y después de mucho buscar y mucho estudiar cosas que no sabía, lo he conseguido por mi cuenta.

El script subirá la imagen original del usuario a la carpeta que le indiquemos y automáticamente creará un thumbnail con el tamaño que le indiquemos en la carpeta que le indiquemos.

Sólo admite .jpg y .jpeg, debido a que con la librería GD no se pueden crear .gif y las transparencias de los .png dan problemas con el Internet Explorer, así nos evitamos rollos. Sólo jpg's y jpeg's.

Al nombre de la imagen subida se le añade automáticamente un prefijo delante, que son 6 números al azar seguidos por un guión bajo, ejemplo:

Subimos imagen.jpg
La imagen que se guardará se llamará 123456_imagen.jpg
El thumbnail creado se llamará tb_imagen.jpg
¡todo automáticamente solo con subir la imagen!

Procedo a explicarlo con el respectivo código:

Se necesitan 2 cosas, la página html del formulario y la página .php con las instrucciones de lo que tiene que hacer el formulario al aceptarlo.

Página html con el formulario:

Código HTML:
 <form action="upload.php" method="post" enctype="multipart/form-data">
        <input name="archivo" type="file" size="35" />
        <input name="enviar" type="submit" value="Upload File" />
        <input name="action" type="hidden" value="upload" />     
      </form> 
Página .php con las instrucciones:

Código PHP:
<?php
      $status 
"";
      (
$_POST["action"] == "upload") or die ("Error al subir la imagen.");
          
// obtenemos los datos del archivo
          
$tamano $_FILES["archivo"]['size'];
          
$tipo $_FILES["archivo"]['type'];
          
$archivo $_FILES["archivo"]['name'];
          
$prefijo substr(md5(uniqid(rand())),0,6);
         
          
            (
$archivo != "") or die ("Error al subir la imagen ".$archivo);
              
// guardamos el archivo a la carpeta "capturas"
            
($tipo == "image/jpeg" || $tipo == "image/jpg") or die ("Sólo se admiten imágenes en <b>.jpg</b> y <b>.jpeg</b>");
              
$destino =  "capturas/".$prefijo."_".$archivo;
            (
copy($_FILES['archivo']['tmp_name'],$destino)) or die ("Error al subir la imagen ".$archivo);
              
$status "La imagen <b>".$archivo."</b> se a subido correctamente !";
              echo 
$status;
         
//aquí empieza el código de creación del thumbnail
          
$source=$destino// archivo de origen
          
$dest="capturas/thumb/tb_".$archivo// archivo de destino
          
$width_d=117// ancho de salida
          
$height_d=82// alto de salida

            
list($width_s$height_s$type$attr) = getimagesize($source$info2); // obtengo información del archivo
          
$gd_s imagecreatefromjpeg($source); // crea el recurso gd para el origen
          
$gd_d imagecreatetruecolor($width_d$height_d); // crea el recurso gd para la salida

            
imagecopyresampled($gd_d$gd_s0000$width_d$height_d$width_s$height_s); // redimensiona
            
imagejpeg($gd_d$dest); // graba
        
        // Se liberan recursos
        
imagedestroy($gd_s);
        
imagedestroy($gd_d);

?>
Éste script utiliza la librería GD para crear los thumbnails, con lo cual, tienes que tenerla instalada en tu servidor sino no funcionará.

Tienes que cambiar 3 cosas en el código php:

1. La carpeta destino de la imagen original en la línea:

Código PHP:
$destino =  "capturas/".$prefijo."_".$archivo
2. El destino y nombre del thumbnail a crear en la línea:

Código PHP:
$dest="capturas/thumb/tb_".$archivo// archivo de destino 
3. El alto y ancho del thumbnail a crear en las líneas:

Código PHP:
$width_d=117// ancho de salida
          
$height_d=82// alto de salida 
Si teneis alguna duda, basta con decirlo e intentaré solucionarlo.

Suerte !!

Yllelder.