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_s, 0, 0, 0, 0, $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.