Foros del Web » Programando para Internet » PHP »

Gestor de imagenes

Estas en el tema de Gestor de imagenes en el foro de PHP en Foros del Web. Hola, como ya comente en un post anterior, estoy programando una especie de galeria de imagenes. Cada usuario puede subir un máximo de 5 imagenes. ...
  #1 (permalink)  
Antiguo 28/12/2007, 18:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Gestor de imagenes

Hola,

como ya comente en un post anterior, estoy programando una especie de galeria de imagenes. Cada usuario puede subir un máximo de 5 imagenes.

Hay una tabla imagenes, donde guardo la id de la imagen, la id del usuario al que pertenece, la url de la imagen y la url del thumb.

Cuando se quiere borrar una imagen, el script borra tanto los registros de la db como los dos archivos en si (img y thumb)

Con todo , me saldria a cuenta usar campos BLOB en vez de todo este lio, o es mejor subiendo los archivos a una carpeta?


Si finalmente lo hago asi, me saltan dos dudas:

-Que nombre poner a los archivos.
-Como redimensionar imágenes que sean mas altas que anchas (La imagen la he de redimensionar a 400x200)

A ver si alguien me puede ayudar!!
  #2 (permalink)  
Antiguo 29/12/2007, 03:24
 
Fecha de Ingreso: abril-2005
Mensajes: 100
Antigüedad: 19 años
Puntos: 0
Re: Gestor de imagenes

yo lo haria de esta manera, las imagenes las guardo en una caperta, por ejemplo: "imagenes" y para el nombre de los archivos usaria la ID del usuario mas una fecha en formato TIMESTAMP ademas le añadiria un identificador al principio del nombre para diferenciar si es la imagen original o del thumb, quedaria algo asi:

o_234_45646475678.jpg
p_234_45646475678.jpg

"o" significaria que es la imagen original y "p" la imagen pequeña, "234" seria el identificador del usuario que ha subido la imagen y "45646475678" la fecha de subida.

En la BD crearia un registro para cada imagen con los campos: id_imagen, id_autor, ruta y fecha. En el campo ruta no pogno el nombre completo de la imagen, sino el nombre generico que seria "234_45646475678.jpg" sin el indentificador, eso ya se lo añadiria yo con php a la hora de mostrar la imagen dependiendo de imagen quiera mostrar la pequeña o la original. Y a la hora de borrar los mismo, ya sabes que cuando borres el registro correspondiente tienes que eliminar:

"imagenes/o_".$row['ruta'];
"imagenes/p_".$row['ruta'];

El problema de redimensionar las imagenes con un tamaño fijo es que si es mas alta que ancha tendras que recortar por arriba y por abajo para que cuadre, y lo mas seguro es que mas de una ocasion recorte mas de la cuenta dejando la imagen que no se enteinda que es lo que es. Lo mejor es usar una proporcion de reescalado para todas.

Por cierto, el formato que te puesto de ejemplo para el nombre de los archivos tiene una pega, y es que solo se deben subir las imagenes de una en una, porque si un mismo usuario sube varias imagenes a la vez, estas tendrian la misma fecha y se sobreescribirian. Pero vamos de ejemplo te sirve. Un saludo.

Última edición por finikini; 29/12/2007 a las 03:33
  #3 (permalink)  
Antiguo 29/12/2007, 07:05
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Gestor de imagenes

Muchas gracias, me ha sido de gran ayuda. Desde un principio pensaba hacerlo para subir la simñagenes una a una, ya que es mucho lio de programacion subir varias a la vez, y más con limitacion del numero de imagenes.

Lo de usar una proporcion de reescalado, conoces algun artñiculo o algun tutorial sobre eso??

Por ultimo, hay alguna manera de mostrar las imágenes con una ruta mas "dinamica" del estilo:

http://img.miweb.com/thumbnails/01/12/2007/123_73448273.jpg
http://img.miweb.com/img/01/12/2007/123_73448273.jpg

donde la primera seria el thumbnail, y la segunda la original.


saludos.
  #4 (permalink)  
Antiguo 29/12/2007, 09:03
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Gestor de imagenes

Bueno, mi aporte (o como lo haría yo):
- Primero, el nombre de la imagen no tiene porque influir mucho. Mientras haya una relación en la BDD da igual que se llame pepito.jpg que 564654654.gif, lo importante es que en la BDD esté bien diferenciado. Si quieres llamarlas de un modo especial (como te han aconsejado antes), yo, en vez de poner el TImestamp le pondría el ID de la imagen en la BDD. Pero vamos, eso ya es a tu antojo.

- Thumbs. Por experiencia, no puedes tener un ancho y alto fijo. con esto sólo consigues que las imágenes que no estén con esa proporción queden o cortadas o desproporcionadas. La solución: tener ancho y altos máximos. Es decir, redimensionar la imagen, manteniendo la proporción y que, como mucho sea igual de alta que el alto máximo e igual de ancha que el ancho máximo.

- Siguiendo con las imágenes en miniatura, lo que suelo haces es meterlas en otra carpeta, aunque nunca está de más que, en el nombre, tengan una parte que las identifique como thumbs.

- Con respecto a subir varias imágenes a la vez sí es posible, además de no ser nada complicado (sólo es necesario un bucle y comprobar los campos del formulario). Y tampoco sería excluyente con la nomenclatura propuesta. Si se suben varias a la vez sólo tiene que añadir al final del nombre _1 ó _2, etc... (claro que sigo pensando en otro tipo de nomenclatura que incluya el ID de la imagen)

- Luego estaría la cuestión de si vas a subir todas las imágenes al mismo directorio, si cada usuario tendría el propio, eso ya es tu decisión.

- Respecto a la última duda, te refieres a la URL que muestre la imagen o a la ruta de la imagen que se pone en el tag img? Bueno, sea como sea, o metes las imágenes en carpetas diferentes dependiendo de la fecha (que no lo veo muy útil la verdad), o trabajas con la directiva mod_rewrite del Apache (si no me equivoco). Si lo dices por el subdominio img, eso tendrías que tratarlo con el hosting (si estás en alguno) o configurarlo en el servidor.
  #5 (permalink)  
Antiguo 29/12/2007, 10:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Gestor de imagenes

Tambien habia pensado en poner la id de imagen como nombre, pero es en el mismo script en el que creo las imagenes e inserto en la tabla, habria alguna manera de "saber" el id que se va a insertar, antes de insertar en la db?

lo del subdominio ya lo tengo pensado, simplemente valdria con crear un subdominio que apuntara al directorio con las imagenes. Lo demás de la url lo decia para que querdara mas "profesional", aunque nunca he entendido de que sirve o porqué lo hacen las webs grandes.


El problema que tengo para subir varias imágenes a la vez, es que el usuario puede subir como maximo 5, entonces tendria que contar el número de imagenes que se han enviado en el formulario, contar el nº de imáquenes que se han subido y dejar subir solo hasta que llegue a 5, y me parece demasiado lio pudiendolo hacer mas sencillo de la otra manera.

saludos.
  #6 (permalink)  
Antiguo 29/12/2007, 11:04
 
Fecha de Ingreso: abril-2005
Mensajes: 100
Antigüedad: 19 años
Puntos: 0
Re: Gestor de imagenes

para saber la id de la imagen... cuando insertas el registro con mysql_insert_id(); obtienes la id del registro:

mysql_query("INSERT ..........",$conexion);
$id_imagen = mysql_insert_id($conexion);

yo prefiero usar la id del usuario, por que me interesa mas saber de quien es la imagen que la propia id de la imagen, pero bueno cada cual tiene sus preferencias, las dos maneras son validas.

Luego lo de subir las imagenes, yo no me comeria tanto la cabeza y lo haria de una en una, total son 5 imagenes como maximo, si fueran 200 seria otro historia XD

Y por ultimo lo de la url, la fecha para que la quieres, si no la necesitas, si con "http://img.miweb.com/o_123_73448273.jpg" ya la tendrias, la url contra mas simple mejor, mas profesional imposible XD
  #7 (permalink)  
Antiguo 29/12/2007, 11:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Gestor de imagenes

Hola,

he estado leyendo sobre mysql_insert_id(), sobre que si dos usuarios insertan a la vez algo, la id puede dar problemas de seguridad, sabeis algo??

Se me ha ocurrido algo: en la tabla id poner simplemente id y id del usuario, y crear siempre la imagen con la sintaxis t_iduser_idimg.jpg asi nisiquiera tendria qye guardar el nombre de la imagen la db y seria mucho mas rapido. Que os parece?¿
  #8 (permalink)  
Antiguo 29/12/2007, 15:09
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: Gestor de imagenes

mysql_insert_id() no da problemas. Es por sesión. Si tu en tu sesión haces un INSERT mysql_insert_id() no se fija en otras sesiones que no sea la tuya.

Saludos
  #9 (permalink)  
Antiguo 30/12/2007, 06:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Gestor de imagenes

Hola,

aprobecho el post para preguntar, en algunas webs sobretodo de noticias o anuncios clasificados, usan un sistema algo extraño para las imágenes, que nunca he llegado a entender.

Como ejemplo:

http://www.marca.com/ficheros/marca/imagenes/071229arteta-cesc_ES.jpg

Se muestra la imagen correctamente, pero si quitamos un número (Se supone la id de la noticia o de la imagen) aparece un gif de 1x1.

http://www.marca.com/ficheros/marca/imagenes/71229arteta-cesc_ES.jpg


Nunca entendi bien estos sistemas, si alguien me explica como funcionan y su utilidad, le estare muy agradecido .
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 16:18.