Foros del Web » Programando para Internet » PHP »

Qué forma es preferible para manejo de imágenes?

Estas en el tema de Qué forma es preferible para manejo de imágenes? en el foro de PHP en Foros del Web. Tengo una duda sobre cómo usar imágenes a partir de archivos de imagen tipo GIF o JPG. No recuerdo dónde leí que las dos formas ...
  #1 (permalink)  
Antiguo 11/01/2006, 04:14
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Qué forma es preferible para manejo de imágenes?

Tengo una duda sobre cómo usar imágenes a partir de archivos de imagen tipo GIF o JPG.

No recuerdo dónde leí que las dos formas habituales tienen sus ventajas y sus inconvenientes:

- Una es almacenar la imagen tal cual en la base de datos (por ejemplo, con el tipo binario BLOB de MySQL).

- La otra es almacenar en la base de datos la cadena de texto que contiene la URL de la imagen.

Cuál es la recomendable y la más usada?

Continuando con este tema, si quiero restringir las dimensiones en pixels de una imagen a cargar por el usuario, puedo hacerlo con GetImageSize() para obtener los pixeles en X,Y, y el tipo de imagen, pero para controlar la restricción en tamaño de bytes, ¿necesito usar la función filesize()?
  #2 (permalink)  
Antiguo 11/01/2006, 04:51
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Personalmente, a mí siempre me fue más cómodo guardar el archivo en una carpeta y el nombre ne la DB para llamarlo cuando lo necesite.
No creo que exista una clara ventaja de un método sobre el otro.

Para restringir el tamaño, se puede hacer simplemente en el upload, con la variable $_FILES['archivo']['size']
  #3 (permalink)  
Antiguo 11/01/2006, 05:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Cita:
Iniciado por Seppo
Personalmente, a mí siempre me fue más cómodo guardar el archivo en una carpeta y el nombre ne la DB para llamarlo cuando lo necesite.
No creo que exista una clara ventaja de un método sobre el otro.

Para restringir el tamaño, se puede hacer simplemente en el upload, con la variable $_FILES['archivo']['size']
Gracias Seppo, lo haré de esa forma, almacenando símplemente la URL, y la imagen, en vez de almacenarla en la Base de Datos, lo haré en un directorio del sistema de archivos. Supongo que las almacenas así no?

En cuanto a la restricción del tamaño, cómo podría hacer un condicional if para por ejemplo restringir esa variable a un máximo de 500KB (imágenes no mayores de 500Kbytes)?
  #4 (permalink)  
Antiguo 11/01/2006, 05:31
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
sí, lo único q deberías tener cuidado es cuando se sube un archivo es que no existe otro con el mismo nombre xq lo pisa...
Para 500 kb deberías usar
Código PHP:
if($_FILES['archivo'] > 1024 512) { exit("El tamaño máximo es de 500 Kb"); 
  #5 (permalink)  
Antiguo 11/01/2006, 05:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Gracias de nuevo Seppo. Cómo compruebo que dicho archivo no existe aún?

Verás, lo que deseo exactamente es que cada vez que se haga un upload de una imagen en una carpeta determinada (p.ej: /imagenes), se almacene la imagen con un nombre específico conforme a una convención propia de nombre y un número por orden consecutivo. Es decir, algo así:

im0001.jpg
im0002.jpg
im0003.jpg
....
im9999.jpg

Cómo se implementaría todo esto?
  #6 (permalink)  
Antiguo 11/01/2006, 06:15
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Pues toma el ultimo valor de tu base de datos y nombra la imagen con este valor + 1

por ejemplo:

$sql=mysql_query("SELECT `id` FROM `imganes` ORDER BY `id` DESC LIMIT 0,1");
if($row=mysql_fetch_assoc($sql)) {
$nro = $row[id]+1;
}

$imagen_nueva = 'img'.nro.'.jpg';

No se si se ha entendido o no...

Obviamente el campo "id" deberia ser autoincrementable (y unico)
__________________
I Love Programming...
  #7 (permalink)  
Antiguo 11/01/2006, 06:36
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Como hizo fulano, pero hago q le sume uno en mysql, y respete los 0 para 0001, 0002, etc
Código PHP:
$q_id mysql_query("SELECT RIGHT(CONCAT('0000', max(id) + 1), 4) as id FROM imagenes");
$id mysql_fetch_assoc($q_id);
$archivo "im".$id['id'].".jpg"
  #8 (permalink)  
Antiguo 11/01/2006, 07:32
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Ah! Genial!

Aunque de todos modos, esos ejemplos se presuponen para una tabla 'Imágenes' que almacene un 'id' de cada imagen y su 'URL' correspondiente, es así?

Yo es que de momento lo tengo configurado de la siguiente forma:
Una tabla 'locales', o 'tiendas', con su propio identificador único y autoincrementable, 'idlocal', y entre otros campos de datos, un campo 'foto', donde pensaba almacenar la URL a la imagen.

Entonces, por lo que interpreto de vuestros ejemplos, sería mejor hacer una tabla 'fotos' separada para las fotografías, con su propia clave primaria 'idFoto' auto-incrementable y su campo 'URL', y en las tablas 'locales' y 'tiendas', poner en el campo 'foto' el 'idFoto' que apunte al registro correspondiente en la tabla 'fotos', no es así?

Bueno, espero no ponerme pesado con el tema. Un saludo!

Última edición por Tigervlc; 11/01/2006 a las 07:40
  #9 (permalink)  
Antiguo 11/01/2006, 08:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 22
Antigüedad: 18 años, 7 meses
Puntos: 0
De acuerdo imagenes

Hola. bueno yo siempre he manejado guardando la direccion de la pagina y de ahi hacer la conulta para mstrala.....y sobre eso necesito que me respondan una duda...en este momento estoy mostrando las imagenes en su tamaño normal, pero necedito que se muestre en un espacio limitado...obviamente mas pequeño que el tamaño original..como se puede hacer???? e visto varios codigos pero no me funicionan, espero qe me ayuden y que lo expliquen poco menos con porotitos...jajajaajajaj
  #10 (permalink)  
Antiguo 11/01/2006, 08:27
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
claro, seria mejor que separes las tablas puesto que de esta forma puedes asociar N fotos al mismo ID del local, de la otra forma estas obligado a poner solo una foto por cada local...
__________________
I Love Programming...
  #11 (permalink)  
Antiguo 11/01/2006, 08:46
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Gracias por el consejo Fulano. Así lo haré.

Pethy, yo he visto una forma de hacer que una imagen pueda ser mostrada del tamaño que desees de la sgte manera. En el sgte ejemplo, se desea que la imagen ocupe 200x200 px:

<img src="mostrar_imagen.php" height="200" width="200" alt="Imagen" />

en vez de poner como fuente el path de la imagen, poner el path del archivo PHP que genere la imagen.

El código de mostrar_imagen.php sería algo así:

....

Código PHP:
// Si por ejemplo el tipo es JPG, crear el lienzo para JPG:
$miImagen ImageCreateFromJPEG('miImagen.jpg'); // Una vez obtenido el path de la imagen a mostrar.

// Generar imagen y mostrarla
Header ('Content-type: image/jpeg');
ImageJPEG($miImagen);

// Liberar memoria del puntero de imagen
ImageDestroy($miImagen); 
....
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 08:08.