Foros del Web » Programando para Internet » PHP »

creacion de thumbnails

Estas en el tema de creacion de thumbnails en el foro de PHP en Foros del Web. buenas. quiero hacer un thumbnail de una imagen que ya tengo en el servidor, estube probando con los codigos que estan en el faq de ...
  #1 (permalink)  
Antiguo 19/07/2005, 15:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 38
Antigüedad: 18 años, 10 meses
Puntos: 0
creacion de thumbnails

buenas.

quiero hacer un thumbnail de una imagen que ya tengo en el servidor, estube probando con los codigos que estan en el faq de php, pero ninguno me resulto

bueno tengo esta funcion

Cita:
function thumbnail($file,$dir,$ancho=100,$alto=100,$gif_sup port=false)
{
if(!file_exists($file)){
return false;
}
if(!is_dir($dir)){
return false;
}
$final = (int) strlen($file) - 4;
$nombre = strtolower(substr($file,0,$final));
$ext = strtolower(substr($file,-4,4));
$nombre = $nombre.$ext;
$mini = $dir."/mini_".$nombre;
if($ext==".jpg" || $ext==".jpeg"){
$origen = imageCreateFromJPEG($file);
$imgAncho= imageSx($origen);
$imgAlto = imageSy($origen);
$imagen = imageCreate($ancho,$alto);
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$a lto,$imgAncho,$imgAlto);
imageJPEG($imagen,$mini);
}else if($ext==".png"){
$origen = imageCreateFromPNG($file);
$imgAncho= imageSx($origen);
$imgAlto = imageSy($origen);
$imagen = imageCreate($ancho,$alto);
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$a lto,$imgAncho,$imgAlto);
imagePNG($imagen,$mini);
}else if(($gif_support==true) && ($ext==".gif")){
$origen = imageCreateFromGIF($file);
$imgAncho= imageSx($origen);
$imgAlto = imageSy($origen);
$imagen = imageCreate($ancho,$alto);
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$a lto,$imgAncho,$imgAlto);
imageGIF($imagen,$mini);
}else{
return false;
}
return true;
}
y la llamo asi

Cita:
if(!thumbnail("imagen.jpg","imagenes/",80,80)){
echo "error en creacion de thumbnails";
}else{
echo "Creacion exitosa";
}
tal como dice en el faq, pero siempre me sale error en creacion de thumbnails.

este archivo que tiene el codigo esta en uan carpeta que se llama prueba, y la carpeta imagenes esta en prueba/imagenes y la imagen imagen.jpg esta en la carpeta prueba/imagenes/imagen.jpg nose que estare haciendo mal, el faq decia que esta funcion utiliza la libreria gd y nose si esta instalada en el servidor, el servidor es apache y esta instalado en windows xp, si me puden ayudar se los agradeseria.

Saludos.Chaus.
  #2 (permalink)  
Antiguo 19/07/2005, 18:48
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Mira CLO justamente acabo de subir un script sobre galerias de imagenes, donde hago uso de la libreria GD. Puedes darle una miradita bajandote el scritp de http://www.geocities.com/stone_neo/galeriastone.zip. Busca el Archivo funcion.php que es donde esta la funcion de crear miniaturas dinamicamente.

Pero por si no tienes ganas de bajarte el script completo y darte mis sugerencias aqui te dejo el codigo

funcion.php

Código PHP:
<?
 $imagen
=$_GET['imagen'];
 
$calidad=80;
 
$reduccion=5;
 
$src_img=ImageCreateFromJPEG($imagen);
 
$ancho_o=imagesx($src_img);
 
$alto_o=imagesy($src_img);
 
//Aqui puedes modificar los tamaños de las miniaturas
 
if($ancho<=$alto)
 {
     
$ancho=80;
     
$alto=100;
 }
 else
 {
     
$ancho=100;
     
$alto=80;
 }
 
$dst_img=imagecreatetruecolor($ancho,$alto);
 
imagecopyresampled($dst_img,$src_img,0,0,0,0,$ancho,$alto,$ancho_o,$alto_o);
 
ImageJPEG($dst_img,'',$calidad);
 
ImageDestroy($src_img);
 
Imagedestroy($dst_img);
?>
Ahora en el script donde pienses hacer la miniatura en el tag <img pones esto

<img src="funcion.php?imagen=nombredelaimagen.jpg" >

Espero que te sirva .
Adios
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #3 (permalink)  
Antiguo 19/07/2005, 19:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 38
Antigüedad: 18 años, 10 meses
Puntos: 0
bueno loquillo, me baje tu scrip y nu me funciono , copie todos los archivo dentro de la misma carpeta donde tengo las imagenes y no pasa nada, incluso en los botones para navegar por las paginas me salen desde el -3 hasta el 0, nose que pasara ahi.

lo otro, es que yo quiero guardar las imagenes en miniatura agregandole un prefijo, por ejemplo si tengo la imagen en 640 x 480 que se llama imagen.jpg quisiera guardarla en la misma carpeta con el tamaño 100 x 70 y que tenga el nombre de thumb_imagen.jpg.

Gracias por tu tiempo.
  #4 (permalink)  
Antiguo 19/07/2005, 19:47
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Mmmmmmm que raro men , lo probe varias veces y funciona como si nada, pero voy a darle una mirada al codigo de nuevo.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #5 (permalink)  
Antiguo 19/07/2005, 19:47
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Mmmmmmm que raro men , lo probe varias veces y funciona como si nada, pero voy a darle una mirada al codigo de nuevo. OK
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #6 (permalink)  
Antiguo 19/07/2005, 22:29
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
Yo hice uno hace un tiempo: http://fedeblog.com.ar/211-Thumbnails-usando-GD.htm

Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #7 (permalink)  
Antiguo 19/07/2005, 23:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 38
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias compadres por su ayuda, pero sigo sin poder hacer lo que necesito hacer , alomejor la culpa es mia, porque no me explico bien o porque no tengo muchos conocimientos de php, pero bueno les explico como es la cosa.

tengo una imagen en una carpeta que se llama imagenes, la imagen se llama foto1.jpg, necesito copiarla y pegarla 2 veces con distintos nombres el primer nombre seria normal_foto1.jpg y el segundo nombre seria thumb_foto1.jpg, asi me quedarian 3 imagenes en la carpeta imagenes que serian
1.- foto1.jpg
2.- normal_foto1.jpg
3.- thumb_foto1.jpg

se me olvidaba decirles que la imagen thumb_foto1.jpg va con otro tamaño que seria 100 x 70.

perdonen por molestar tanto, pero realmente lo necesito y gracias por tomarse el tiempo de contestarme.

Saludos.
  #8 (permalink)  
Antiguo 20/07/2005, 00:01
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 19 años, 2 meses
Puntos: 0
Ahora no tengo ganas de ponerme a escribir código, pero te digo más o menos cómo puedes hacerlo:

- Cargas la imagen (createimagefromjpeg)
- La guardás (imagejpeg($imagen, calidad, "normal_foto1.jpg"))
- La redimensionás (imagecopyresampled o imagecopyresized, el que más te guste)
- La guardás (imagejpeg($imagen, calidad, "thumb_foto1.jpg"))

Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #9 (permalink)  
Antiguo 20/07/2005, 02:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 38
Antigüedad: 18 años, 10 meses
Puntos: 0
bueno lokillos, ya hice algo por lo menos, me di cuenta que para darle los valores a la funcion habia que poner esto en el navegador

pero, como le doy la direccion de la imagen sin tener que poner eso en el navegador?

tengo esta funcion
function thumbjpeg($imagen,$altura) {

Cita:
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "";

// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$prefijo_thumb = "thumb_";
$camino_nombre=explode("/",$imagen);

// Aquí tendremos el nombre de la imagen.
$nombre=end($camino_nombre);

// Aquí la ruta especificada para buscar la imagen.
$camino=substr($imagen,0,strlen($imagen)-strlen($nombre));

// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb))
mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio $dir_thumb");

// Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$n ombre)) {
echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>n";
$img = imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>n");

// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>n");

// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);

// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);

// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);

// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb .$nombre);
}
}
y la llamo asi
Cita:
thumbjpeg($imagen, 125);
por si no me entienden, necesito darle el valor a $imagen sin tener que poner en el navegador esto trate de darle la direccion a la variable imagen asi $imagen = "imagenes/foto1.jpg" pero me sale un error tambien trate pasandole todo lo que se pone en el navegador pero tampoco me resulto.

Denuevo gracias, y si me responden esta les juro que no los molesto mas por un rato
Saludos, Chaus
  #10 (permalink)  
Antiguo 20/07/2005, 08:37
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Mita Clo ya descubir mi falla, la galeria funcionaba bien para mas de 4 paginas pero para menos tenia errores , ya esta corregido puedes bajarlo de nuevo y probarlo.

Mira en el archivo funcion.php es en donde tienes que cambiar las dimensiones que quieres que tengan tus thumbnails. Y pues creo k seria mejor que los thumbnails se hagan en tiempo real y no que se guarden archivos de miniaturas en el servidor.

Si encuentras otra falla no dudes en escribirme.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #11 (permalink)  
Antiguo 20/07/2005, 14:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 38
Antigüedad: 18 años, 10 meses
Puntos: 0
si men, si se que es mejor en tiempo real por lo que he leido, pero estoy editando una galeria, que hace guarda estas thumbails, y necesito saber como guardarlas, lo unico que necesito saber ahora es como le paso a la variable $imagen el valor de la imagen sin tener que poner en el navegador

http://localhost/pagina_de_prueba/bo...enes/foto1.jpg

si estoy llamando a la funcion asi thumbjpeg($imagen, 125);

porfa ayudame con eso, te lo agradeceria.

Saludos, Suerte.
  #12 (permalink)  
Antiguo 25/07/2005, 20:07
pez
 
Fecha de Ingreso: enero-2002
Mensajes: 354
Antigüedad: 22 años, 3 meses
Puntos: 0
hola stone_neo

Estuve viendo el código de tu galería y observe un pequeño error, te falto especificar quien es $ancho y $alto
te marque en negrita el codigo que hace falta.

<?

Header("Content-type:image/jpeg");
$imagen=$_GET['imagen'];
$calidad=80;
$reduccion=5;
$src_img=ImageCreateFromJPEG($imagen);
$ancho_o=imagesx($src_img);
$alto_o=imagesy($src_img);
$tamaño= getimagesize($imagen);
$ancho=$imagen[0];
$alto=$imagen[1];

//Aqui puedes modificar los tamaños de las miniaturas
if($ancho<=$alto)
{
$ancho=80;
$alto=100;
}
else

{
$ancho=100;
$alto=80;
}
$dst_img=imagecreatetruecolor($ancho,$alto);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$anch o,$alto,$ancho_o,$alto_o);
ImageJPEG($dst_img,'',$calidad);
ImageDestroy($src_img);
Imagedestroy($dst_img);

?>

saludos
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 23:12.