Comunidad de diseño web y desarrollo en internet online

Subir un Thumbnail !

Citar            
MensajeEscrito el 14 Feb 2009 02:41 pm
Hola !!
Amigos, Necesito de su ayuda...
He estado tratando subir una imagen a mi página, pero que al subirla, me la modifique a un tamaño cualquiera (Ej: 300x300) (No que simplemente la cambie de tamaño, sino que me haga un thumbnail de la imagen). Tengo el código para hacer las 2 cosas por separado, pero cuando las junto no me funciona...

Código para subir imagen:

Código :

$destino = 'image/';
move_uploaded_file($_FILES['file']['tmp_name'], $destino.$_FILES['file']['name']);


Código para hacer el Thumbnail:

Código :

function thumbjpeg($imagen) { 
   $original = imagecreatefromjpeg($imagen);
   $thumb = imagecreatetruecolor(300,300); /
   $ancho = imagesx($original);
   $alto = imagesy($original);
   imagecopyresampled($thumb,$original,-300,-300,0,0,$ancho,$alto,$ancho,$alto);
   imagejpeg($thumb);
} 


Ahora, cuando lo trato de combinar no me funciona... (Lo que está en negrita son los cambios)
Traté de colocar esto:
move_uploaded_file(thumbjpeg($_FILES['file']['tmp_name']), $destino.$_FILES['file']['name']);

Esto:
move_uploaded_file($_FILES['file']['tmp_name'], $destino.thumbjpeg($_FILES['file']['name']));

Y esto:
move_uploaded_file(thumbjpeg($_FILES['file']['tmp_name']), $destino.thumbjpeg($_FILES['file']['name']));

Pero todo me causa un error...

Ayudenme por favor !!!

Gracias de Antemano

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 14 Feb 2009 05:32 pm
Yo no uso move_uploaded_file para guardar la imagen, la misma función imagejpg tiene una parámetro para guardar la imagen:
Este es tu código modificado en la última línea, el segundo parámetro es el destino, el tercero la calidad del jpg:

Código :

function thumbjpeg($imagen) { 
   $original = imagecreatefromjpeg($imagen);
   $thumb = imagecreatetruecolor(300,300); /
   $ancho = imagesx($original);
   $alto = imagesy($original);
   imagecopyresampled($thumb,$original,-300,-300,0,0,$ancho,$alto,$ancho,$alto);
   imagejpeg($thumb, "imagenes/lafotodemiperro.jpg", 85);
} 

Por gente21

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Feb 2009 05:33 pm
A POR CIERTO.
Tienes que liberar la imagen temporal de memoria si no quieres quebrar tu php:
imagedestroy($thumb); (al último)

Por gente21

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Feb 2009 07:17 pm
Hola gente21 !
Gracias por tu respuesta !
sigo con el problema... pero mejoró MUCHO... ahora si me crea la imagen, pero no encuentra la imagen que selecciono, por lo tanto, me crea una imagen totalmente negra...

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba</title>
</head>
<body>
<?php
function thumbjpeg($imagen, $imagen2) { 
   $original = imagecreatefromjpeg('"'.$imagen.'"');
   $thumb = imagecreatetruecolor(400,400);
   
   $ancho = imagesx($original);
   $alto = imagesy($original);
   
   imagecopyresampled($thumb,$original,-300,-300,0,0,$ancho,$alto,$ancho,$alto);
   imagejpeg($thumb, "image/".$imagen2, 85);
   imagedestroy($thumb);
} 
if (isset($_POST["guardar"])){
   thumbjpeg($_FILES['file']['tmp_name'], $_FILES['file']['name']);
}
?>
   <form style="text-align:center" action="?" method="post" enctype="multipart/form-data">
            <input type="file" name="file" id="file" /><br/>
     <input name="guardar" type="submit" id="guardar" value="Guardar" />
   </form>
</body>
</html>


Como verás, le envío a la funcion thumbjpeg 2 datos, el primero debería ser la ruta donde esta la imagen, y la segunda el nombre... Pero cuando pruebo, me dice que no hay nada en esa ruta, por eso supongo, que eso que pongo ahí no es la ruta... He estado buscando información pero no se como hacer... ¿ como se la ruta de esa imagen ??

Gracias !!!

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 14 Feb 2009 07:47 pm
A mi me funcionó asi, si lo notas dejé sin escapar e nombre ( $original = imagecreatefromjpeg($imagen)) y quité el -300,-300 (del imagecopyresampled) porque me ponía la imagen fuera del cuadro:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba</title>
</head>
<body>
<?php
function thumbjpeg($imagen, $imagen2) { 
   $original = imagecreatefromjpeg($imagen);
   $thumb = imagecreatetruecolor(400,400);
   
   $ancho = imagesx($original);
   $alto = imagesy($original);
   
   imagecopyresampled($thumb,$original,0,0,0,0,$ancho,$alto,$ancho,$alto);
   imagejpeg($thumb, $imagen2, 85);
   imagedestroy($thumb);
} 
if (isset($_POST["guardar"])){
   thumbjpeg($_FILES['file']['tmp_name'], $_FILES['file']['name']);
}
?>
   <form style="text-align:center" action="?" method="post" enctype="multipart/form-data">
            <input type="file" name="file" id="file" /><br/>
     <input name="guardar" type="submit" id="guardar" value="Guardar" />
   </form>
</body>
</html>

Por gente21

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Feb 2009 08:27 pm
Ya sirve !
Gracias gente21 !!!

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 14 Feb 2009 08:57 pm
denada =)

Por gente21

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2010 05:13 pm
Hola tengo un problema con este codigo:

upload.php:

<?php
if ($_GET["action"] == "upload") {
$archivo = $_FILES["Filedata"]['name'];
$destino = 'imagen1.jpg'; ///EL NOMBRE CON EL QUE SE VA A GUARDAR EN EL DIRECTORIO///
if ($archivo != "") {
$destino = "files/".$destino;
copy($_FILES['Filedata']['tmp_name'], $destino);

}
}
?>

Al codigo lo hice, y la idea es que selecciono una imagen con un nombre cualquiera, y al subirlo lo cambia por el de "imagen1.jpg", ahora bien, yo quiero que si sube otra imagen, que no me la reemplace, sino que genere otra con el nombre "imagen2.jpg" y asi sucesivamente. Seguramente debe ser algo censillo, pero ya no me da mas la mente jaja :D
Saludos!!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 05 Oct 2010 06:11 pm
En ese caso vas a tener que usar un contador, pues es la única forma que se me ocurre de llevar la cuenta (suponiendo que tu script funcione varias veces al día y no solo una vez). Para eso puedes usar una base de datos o un archivo de texto (aunque también podrías usar COOKIES, SESSIONS o algo así aunque es más rollo), te dejo la opción de usar un archivo de texto, para esto leemos el número en el archivo con el siguiente código:

Código :

 
$count = file_get_contents("cuenta.txt");
$count = explode("=", $count);
$count[1] = $count[1]+1;
$file = fopen("count.txt", "w+");
fwrite($file, "count=".$count[1]);
fclose($file);

//esta es tu variable de conteo (se la agregas al final del nombre del archivo):
$cuentilla = $count[1];


y tu archivo de texto (que se llama "cuenta.txt") solo debe contener:

Código :

 count=1

Cada vez que corra el script solito va a gregar un numero a la centa U_U

Por gente21

79 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Oct 2010 06:31 pm
:O bueno lo pruebo, y te aviso, te digo que ese codigo que mostre, antes usaba un
$prefijo = substr(md5(uniqid(rand())),0,6);
el problema es que me mete muchisimos numeros adelante, no me sigue un orden, si subo una imagen, me pone un numero aleatorio+el nombre original.jpg, y si vuelvo a subir la imagen, me pone otro nombre aleatorio+nombre original.jpg, mi idea era que puciera el nombre original.jpg y si subis otra imagen, empieze a contar en orden.
El scrip funciona, bien y necesito si o si que cuando suba cambie el nombre original por el de imagen1.jpg, hata ahi lo hace perfecto, per si subo otra imagen, me la reemplaza, y eso no quiero :(.
De todos modos pruebo lo que me dices y te respondo :D

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 05 Oct 2010 06:56 pm
Aquí están tu script y el mío juntos, esto debería de hacer lo que pides, solo asegúrate de subir el archivo de texto "cuenta.txt" como te pedí en el post anterior. Si le pones atención a esta parte:

Código :

$destino = "imagen".$cuentilla.".jpg"; ///EL NOMBRE CON EL QUE SE VA A GUARDAR EN EL DIRECTORIO///


Verás que solo agrego el numero al nombre de tal manera que te dé un número inmediato superior. Este es el código completo, suerte.

Código :

<?php
if ($_GET["action"] == "upload") {
   
   $count = file_get_contents("cuenta.txt");
   $count = explode("=", $count);
   $count[1] = $count[1]+1;
   $file = fopen("count.txt", "w+");
   fwrite($file, "count=".$count[1]);
   fclose($file);
   
   //esta es tu variable de conteo (se la agregas al final del nombre del archivo):
   $cuentilla = $count[1];
   
   $archivo = $_FILES["Filedata"]['name'];
   $destino = "imagen".$cuentilla.".jpg"; ///EL NOMBRE CON EL QUE SE VA A GUARDAR EN EL DIRECTORIO///
   if ($archivo != "") {
      $destino = "files/".$destino;
      copy($_FILES['Filedata']['tmp_name'], $destino);
   
   }
}
?>

Por gente21

79 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.