Ir al contenido


Foto

¿Cómo guardar y visualizar todo tipo de imágenes vía delphi en base access?


  • Por favor identifícate para responder
6 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 30 julio 2010 - 04:41

El problema es que cuando intento insertar una imagen jpg o png o otra no acepta el formato en cambio solo acepta bmp y necesito que el usuario de mi software pueda insertar imágenes de cualquier tipo en un campo de fotos y a la vez necesito otra cosa quiero que la imagen se adapte al tamaño del campo dbimage de delphi porque al insertar la imagen entra con el tamaño de fabrica si es muy grande no se ve bien espero su ayuda gracias de antemano estoy trabajando con access y bueno inserte un campo con tipo de datos OLE y luego lo pase a delphi con un dbimage necesito hacer lo anterior gracias.
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 31 julio 2010 - 10:21

Hola
La verdad soy partidario de guardar la fotos en un directorio o archivo, no en la BD, menos en access.
Cuando se tengan guardadas muchas fotos TODA la BD se hara lenta.
Guardar las fotos y repuperarlas en delphi, sin que el usuario se entere es sencillo.
Saludos
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 31 julio 2010 - 11:12

Hola,
Poco usé Access, y debo reconocer que nunca de las veces que lo he usado he guardado una foto.
No estoy familiarizado si es que el campo OLE es capaz de poder almacenar cualquier formato de imagen, existe la posibilidad de que sólo acepte .bmp.

Si bien la respuesta a la pregunta de si es aconsejable o no guardar imagenes en BD está abierta... a Access esto es más contraproducente. En primera, Access no está perfectamente diseñado para esto, y en segunda el tamaño de un archivo de Access está limitado a 2GB. Cada imagen que se almacene aumenta los KB, y cuanto más grandes sean las imágenes... más rápido crecerá y más lento será el acceso a los datos.

Por ello coincido con Carlos: es preferible que se almacene en un campo alfanumérico la ruta a la imagen y luego desde el aplicativo cargarla. Si se tiene pensando que el sistema trabaje en red el directorio en donde estén alojadas las imágenes debería estar compartido.

Si fuera otro motor de base de datos, que tenga un mejor soporte, quizá podría replantearse esta pregunta. Mucho me temo que para el caso de Acceess no sea lo más conveniente.

Respecto ahora sobre el DBImage, estoy un tanto falto de memoria... creo que este solo es capaz de reconocer los formatos BMP de forma nativa. Para que pueda recuperar el formato JPG se deberá añadir a uses la unidad Jpeg.
Si se opta por almacenar la ruta, el disponer del DBImage es un desperdicio y es mejor directamente optar por TImage.

Desafortunadamente TImage sólo acepte .bmp, jpg (si se añade la unit anteriormente mencionada), y otros dos que no recuerdo. No cuenta con soporte a PNG... en este escenario deberás recurrir a componentes de terceros, o bien convertir estas imagenes a BMP.

Saludos,
  • 0

#4 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 31 julio 2010 - 11:55

Hola
Aqui tienes un ejemplo:
Puede agregar a la BD access el tipo de foto que se quiera, bmp, jpg, png.
La captura de un archivo y la guarda en la bd.
Saludos
PD: La bd de muestra contiene solo 3 fotos el tamaño del ejemplo te dice lo que crecerá la BD cuando tengas las fotos en ella.

Archivos adjuntos


  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 31 julio 2010 - 12:55

Hola,
Estuve viendo tu ejemplo Carlos.
Por lo que aprecio tu creas y guardas las fotos como .jpg mediante el uso de la clase TJPEGImage  y aplicando streaming como debe hacerse.

El asunto es que con .png y/o cualquier otro formato (que no sea .bmp, o .jpg) va a fallar. Para ello habrá que recurrir a clases y/o componentes de terceros. Si no recuerdo mal, escafandra aportó clases para trabajar con este formato de imagen  ;).
La clase TJPEGImage sólo puede abrir imagenes con el formato .jpg/jpeg y .bmp.

El TImage, al menos en las versiones anteriores a la saga 200x solo tiene soporte para los siguientes formatos: .bmp, jpg/jpeg, .ico, .wmf y .emf. No se podrá visualizar en este componente ningún otra imagen.

Si se desea diseñar el aplicativo para tener soporte a múltiples formatos de imagen y almacenar a éstas en la base de datos entonces deberá hacerse lo siguiente:
1. En la tabla, añadir un campo que guarde o distinga el formato.
2. En la aplicación añadir las clases y/o componentes de terceros necesarios para trabajar con los formatos tanto para abrir, guardar y/o mostrar.

El método fácil y sencillo es el que aplica Caral: estandarizar todas las imágenes a un único formato. Se aplicaría la conversión de un formato a otro sólo a efectos de almacenamiento y luego al cargarlas y mostrarlas no habría que recurrir a tediosas evaluaciones y nuevas conversiones.

Saludos,
  • 0

#6 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 31 julio 2010 - 01:10

Hola
El ejemplo que puse esta hecho por ChackAll.
Yo lo unico que he hecho es hacer que guarde otros formatos, una sencilla modificación.
Saludos
  • 0

#7 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 31 julio 2010 - 01:50

Aqui  Sarko explica muy bien que es lo que hay que hacer, al menos con bmps y Jpgs, para otros formatos hay que investigar un poco mas.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.