Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Cargar un imagen a un Timage desde ORACLE

Hola a Todos,


Bueno mi problema es que tengo una tabla con un campo tipo long en el cual guardo imganes.. se como guardar las imagenes, utilizo lo siguiente:

tabla1.insert;
tabla1.FieldByName('Imagen').LoadFromFile('c:\ruta\imag.jpg',ftmemo);
tabla1.post;

lo que no se es como cargar las imagnes de mi tabla a un componente Timage.

porfavor ayuda..
Responder Con Cita
  #2  
Antiguo 05-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola

Ya probastes asociarle un componente TDBImage al campo Imagen de la tabla?


Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #3  
Antiguo 05-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Cita:
Empezado por yusnerqui
Ya probastes asociarle un componente TDBImage al campo Imagen de la tabla?


Saludos
hola,

si, yo probe con un DBImage y me da un error que dice. EReadError with message 'Stream read error'.
por otro lado yo estuve utilizando el sienguente codigo:

var
bimp : TBitmap;
ms : TMemoryStream;
Begin

Image1.Visible := True;
bimp := TBitmapCreate;
ms := TMemoryStream.Create;
EmployFOTOGRAFIA.SaveToStream(ms);
bimp.LoadFromStream(ms);
Image1.Picture.Assign(bimp);
ms.Free;
bimp.Free;
end;

con esto simplemente no me muestra nada, no me da error pero no me muestra la imgagen.
Responder Con Cita
  #4  
Antiguo 05-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola de nuevo

Creo que se te escapó un detalle, las imágenes que estás cargando son JPG y no las puedes asignar así directamente, tienes que primero hacer la conversión.

lo primero es agregar en el Uses la unidad "jpeg".

Después algo como esto:

Código Delphi [-]
  Var
    bimp : TJpegImage;
    ms : TMemoryStream;
   begin
     Image1.Visible := True;
     bimp := TJpegImage.create;
     ms := TMemoryStream.Create;
     EmployFOTOGRAFIA.SaveToStream(ms);
     bimp.LoadFromStream(ms);
     Image1.Picture.Assign(bimp);   
     ms.Free;
     bimp.Free;
   end

Bueno esto lo he hecho de memoria y mirando tu código, pero de seguro te ayudará a terminar de solucionar el problema.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #5  
Antiguo 06-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Hola

primero quiero darte las gracias por el tiempo que has
dedicado para ayudarme..

intente llamarla como un JPG y me dio error : JPEG Error #42..

pero hay algo, la imagen que guardo en la base de dato Oracle es Bitmap
y por eso es que trato de capturarla asi...

Gracias..
Responder Con Cita
  #6  
Antiguo 06-07-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
mmmmm

Cita:
Empezado por kavisch
tabla1.FieldByName('Imagen').LoadFromFile('c:\ruta\imag.jpg',ftmemo);
Cita:
Empezado por kavisch
pero hay algo, la imagen que guardo en la base de dato Oracle es Bitmap
Estás seguro?.

Por otra parte buscando en los foro he encontrado varios hilos sin respuestas con tu mismo problema:
Hilo1
Hilo2
Hilo3

He notado que para guardar la imágen no lo hacen directamente como propones, sino que usan el objeto TStream.

Saludos.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #7  
Antiguo 06-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
hola otra vez

Bueno yo te dije que es de tipo Bitmap porque yo capturo esa imagen
de una camara y la guardo como bitmap el el server y luego la gurado a la base de datos asi mismo. , pero ahora no se si es bitmap,

ya que me puse a verificar el hilo3 y intente capturar la imagen como el explica en el hilo, cuando lo ejecute no reconoce ninguno de los formatos, me explico , no es ni BMP , JPG O GIF, Si te das cuanta el lee el campo y pregunta de que tipo es para crear la imagen , en mi caso no entra en ninguno de estos bloques...

Gracias...
Responder Con Cita
  #8  
Antiguo 07-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 21
SnaKe Va por buen camino
Hola,


En este hilo encontrarás información para almacenar la imagen en la base de datos y luego recuperarla en un control TImage:

http://www.clubdelphi.com/foros/showthread.php?t=2450

Las pruebas las hice con bases de datos Paradox e Interbase pero debería valer para todos los tipos de base de datos.

Espero que te sirva.
Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos
Responder Con Cita
  #9  
Antiguo 08-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 21
SnaKe Va por buen camino
Hola,

A ver, ya he conseguido almacenar imágenes BMP en una base de datos Oracle y luego mostrarlas en un TImage.

Lo primero, el campo de la tabla de la base de datos no debe ser LONG sino que debe ser LONG RAW

Bien, el código para incorporar la imagen sería algo así e iria colocado en el click de un botón que he puesto para añadir la imagen:

Código Delphi [-]
if (OpenDialog1.Execute) then begin
  if (Table1.State <> dsBrowse) then
    Table1.Insert;
  Table1FOTO.LoadFromFile (OpenDialog1.FileName);
  Table1.Post;
end;
OpenDialog1 es un control dialogo de apertura de ficheros.
Table1 es un TTable conectado a la tabla.
Table1FOTO es el campo persistente asociado al campo de tipo LONG RAW

Y luego, para mostrarla en el evento OnAfterScroll del TTable (Table1) he puesto este codigo:
Código Delphi [-]
var
  B : TBitmap;
begin
  B := TBitmap.Create;
  B.Assign (Table1FOTO);
  Image1.Picture.Assign(B);
  B.Free;
end;
Image1 ya sabes lo que es ¿no?.

Esta última parte es posible que funcione simplemente así (ojo, esto no lo he probado):
Código Delphi [-]
begin
  Image1.Picture.Assign(Table1FOTO);
end;

Este codigo combinado con unos buenos try/except y algun control mas por si hubiese error... (paporsiacaso como dicen en mi pueblo) debería funcionarte correctamente.

Espero que te sirva.

Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos

Última edición por SnaKe fecha: 08-07-2005 a las 09:22:26.
Responder Con Cita
  #10  
Antiguo 08-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Funciono Perfectamente


Hola,

Quiero darte las gracias, lo que me enviaste funciona perfectamente
guarda la imagen y luego la puedo mostrar en el TImage. Pero quiero preguntarte porque es que no se puede usar LONG, ya que aqui todas las tablas tiene los campos imagenes de tipo long y no Long raw.

Muchas gracias,
Responder Con Cita
  #11  
Antiguo 11-07-2005
Avatar de SnaKe
SnaKe SnaKe is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid (España)
Posts: 227
Poder: 21
SnaKe Va por buen camino
Hola,

Pues la verdad es que no lo se, si dices que en campos de tipo LONG teneis guardadas imágenes no se... yo no puedo... tampoco he trasteado demasiado con Oracle, solo lo suficiente...

Cuando creo el campo persistente sobre un campo de tipo LONG de Oracle la variable es del tipo: TMemoField para Delphi, con esto si le intentamos dar datos binarios (imagenes, sonidos, etc...) se almacena como texto con lo cual se pierde información.

En cambio si el tipo es LONG RAW el campo persistente se genera del tipo TBlobField para Delphi, entonces al darle información a esa varible ya lo hace correctamente.

Yo creo que es un poco como los campos de tipo MEMO y GRAPHIC de Paradox, en uno se almacenan Textos y en otros datos binarios, al menos el tratamiento que Delphi hace de ellos es ese.

Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más.
Guia de Estilos
Responder Con Cita
  #12  
Antiguo 14-07-2005
kavisch kavisch is offline
Miembro
 
Registrado: jun 2005
Posts: 32
Poder: 0
kavisch Va por buen camino
Hola Snake

Hola,

Snake tengo un gran problema y te voy a explicar, aqui hay una aplicación finaciera la cual maneja todo lo que es contabillidad, esta aplicacion tiene su base de datos en Oracle y los Campos de Foto son de tipo LONG. lo que sucede es que la aplicacion que estoy creando va a complementar funciones de uno de sus modulos que es el de los empleados, mi aplicación capturara la foto y la guardara en la base de datos y luego la mostrara cuando se busque un empleado.

el caso es que como ya hemos hablado yo puedo guardar la imagen en el campo LONG y la aplicacion fInaciera Muestra la imagen, pero con mi aplicacion no puedo mostrarla.

ya se que me dijiste que deberia Usar Campos de TIpo LONG ROW y yo hice unas pruebas con tablas que yo cree y funciono perfectamente, pero no puedo cambiar la estructura de estas tablas ne moe lo permiten, el caso es que Quiero saber si puedo desplegar esa imagen en un Timage en delphi con los campos de tipo LONG y muestrame si te es posible un Ejemplo....

Muchas Gracias,

Última edición por kavisch fecha: 14-07-2005 a las 16:53:31.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 07:35:36.


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