Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2004
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
Insertar una imagen JPG en una tabla paradox

Hola

Utilizo Delphi 6 y tengo una tabla paradox con un campo llamado imagen , que es un campo Grafico "G" , luego en la aplicación para abrir la imagen utilizo un TopenPicture , y para que abra una imagen jpg he puesto en el uses de arriba , jpeg.

Cuando inserto una imagen bmp no hay ningún problema ,pero cuando cargo la imagen jpg y le doy a validar , pues no se queda en la base de datos , no la admite.

Me gustaria saber la razón y también la solución.

Un saludo.
Responder Con Cita
  #2  
Antiguo 24-11-2004
TDworD TDworD is offline
Miembro
 
Registrado: nov 2003
Posts: 23
Poder: 0
TDworD Va por buen camino
Si el problema es porque sea un JPEG, prueba a pasar la imagen por un objeto TBitmap antes de grabarlo en la base de datos, puede que si no no haga el cambio de formato y en la base de datos supongo que sólo se podrán almacenar Bitmaps.

Un saludo.

TDworD
Responder Con Cita
  #3  
Antiguo 24-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por David
Me gustaria saber la razón y también la solución.
La razón es que el tipo Graphic de Paradox no acepta este formato de imágenes. Eso no significa que no puedas guardar imágenes jpg en una tabla Paradox, sólo que no es tan inmediato.

Para empezar debes usar otro tipo de campo, por ejemplo Binary. Básicamente el tipo Binary te sirve para almacenar cualquier cosa, una imágen, una canción o cualquier archivo en un formato que Paradox no entienda.

Lo malo es que entonces no hay una forma directa de conectar este tipo de campos a un TDBImage (*) para mostrar y agregar imágenes.

En su lugar debes usar un TImage normal.

Por ejemplo, para agregar una imagen a la tabla puedes cargarla en un TImage con Image.Picture.LoadFromFile (deberás incluir la unidad jpeg) o directamente usando un objeto TJpegImage de la unidad jpeg en caso de que no requieras mostrar la imagen al usuario.

Después deberás usar el método SaveToStream de Image.Picture.Graphic o JpegImage para guardar el contenido a un Stream. Me parece que recomiendan un TBlobStream aunque puedes hacerlo con TStringStream.

Ya desde el Stream puedes copiar el contenido al campo:

Table1.FieldByName('foto').AsString := Stream.Datatring;

Y con esto ya tendrás guardada la imagen.

Para desplegarla tienes que seguir mas o menos los pasos inversos.

Asignas el contenido del campo a un TStringStream al momento de crear el stream:

Stream := TStringStream.Create(Table1.FieldByName('foto').AsString);

Y usas el método LoadFromStream de Image.Picture.Graphic o de JpegImage para cargar la foto.

Te estoy diciendo los pasos de memoria así que puedo estar equivocado en algo. Pero si buscas en los foros encontrarás más detalles. Me parece que hay un hilo del compañero Snake donde describe con precisón lo que hay que hacer. Yo nada más te estoy describiendo a grandes rasgos el proceso.

(*) Sí existen formas de usar un DBImage para mostrar imagenes jpg pero tienes que construir un derivado de TField que entienda este tipo de datos. Busca en el Code Central de Borland Developer Network las aportaciones de Robert Kuhlmann que versan sobre el tema. Él tiene un código para que puedas usar un DBImage con imágenes jpg.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:14:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi