Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2005
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 20
zugazua2001 Va por buen camino
Tratamiento de base de datos con Imagenes

Hola, yo trabajo con delphi 5 y base de datos paradox.
Tengo una tabla con tres campos: un campo alfanumerico, uno autoicrementable, y un campo de tipo graphic. Bien yo quiero asignarle a ese campo un archivo de tipo JPG. ¿Cómo puedo hacer para grabar fotos en la base de datos? Yo intente con lo siguiente utilizo el motor de base de datos de borland BDE.
tabla.DataSource.DataSet.FieldByName('Imagen').Assign(imagen1.picture.graphic) y me tira errores.
Esta bien esa sentencia ¿?
Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 08-06-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Acabo de sunirlo como truco a la Web, pero mientras está, éstan son las rutinas para grabar y recuperar un JPEG de una tabla Paradox:

Código Delphi [-]
 // Cargar el contenido de un campo GRAPHIC de paradox a un TImage
 procedure TForm1.JpegBlobToImage();
 var
   Stream: Tblobstream;
   img: Tjpegimage;
 begin
   // Cargar el campo Blob en un Stream
   Stream := Tblobstream.Create(TBlobField(Table1.fieldbyname('Imagen')), bmRead);
   // Crear la Imagen
   img := Tjpegimage.Create();
   // Cargar la imagen con el Stream
   img.loadfromstream(Stream);
   // Pasarla a un control IMage
   image1.picture.assign(img);
   // Liberar
   img.free;
   Stream.free;
 end;
 
 // Cargar el contenido de un TImage a un campo GRAPHIC de Paradox
 procedure TForm1.ImageToJpegBlob();
 var
   Stream: Tblobstream;
   img: Tjpegimage;
 begin
   // Crear un Stream "apuntando" al campo Blob
   Stream := Tblobstream.Create(TBlobField(Table1.fieldbyname('Imagen')), bmReadWrite);
   // Crear la imagen
   img := tjpegimage.create;
   // Asignar el TImage a la Imagen
   img.Assign(image1.picture);
   // Guardarlo en el Stream
   img.savetostream(Stream);
   // Liberar
   img.free;
   Stream.Free;
 end;

Para utilizarlos aquí un ejempo:

Código Delphi [-]
 procedure TForm1.btGrabarClick(Sender: TObject);
 begin
   // Grabar el registr
   Table1.Edit;
   Table1.FieldByName('Nombre').AsString := DBEdit1.Text;
   ImageToJpegBlob();
   Table1.Post;
 end;
 
 procedure TForm1.btLoadClick(Sender: TObject);
 begin
   JpegBlobToImage();
 end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 08-06-2005
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 20
zugazua2001 Va por buen camino
Gracias genio.

Andaba bien. Gracias nuevamente

Última edición por zugazua2001 fecha: 08-06-2005 a las 17:31:57. Razón: Ningun error.
Responder Con Cita
  #4  
Antiguo 25-03-2012
mcasso mcasso is offline
Miembro
 
Registrado: dic 2006
Posts: 16
Poder: 0
mcasso Va por buen camino
Solo muestra imagen del primer registro

Saludos a todos, me disculpo si el tema esta muy visto. En el foro encontré como mostrar imagen en TImage
desde mi base de datos MySQL, pero solo consigo mostrar la imagen del primer registro.
Tengo 2 campos: ID y Bandera->blob. Uso Delphi XE2. Por favor una idea de como podría mostrar la bandera de cada usuario al desplazarme por el DBGrid.

Ej. del codigo.
Código Delphi [-]
procedure TForm1.SQLTable1AfterScroll(DataSet: TDataSet);
 var
  Stream : TSQLBlobStream;
  Png : TPNGImage;
begin
  if not SQLTable1.FieldByName('BANDERA').IsNull then
    begin
    Stream := TSQLBlobStream.Create(TBlobField(SQLTable1.FieldByName('BANDERA')),bmRead);
    Stream.Seek(0, soFromBeginning);
      Png := TPNGImage.create;
       Png.LoadFromStream(Stream);
       Image1.Picture.Assign(Png);
      Png.Free;
      Stream.Free;
    end;
end;
Muchas Gracias.

Última edición por marcoszorrilla fecha: 25-03-2012 a las 21:27:21.
Responder Con Cita
  #5  
Antiguo 25-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda usar los 'tags' para el código fuente, ejemplo:






.
Responder Con Cita
  #6  
Antiguo 25-03-2012
mcasso mcasso is offline
Miembro
 
Registrado: dic 2006
Posts: 16
Poder: 0
mcasso Va por buen camino
Solo muestra imagen del primer registro

Si, gracias lo tomaré siempre en cuenta.
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 21:32:11.


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