Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Tratamiento de base de datos con Imagenes (https://www.clubdelphi.com/foros/showthread.php?t=22147)

zugazua2001 07-06-2005 21:21:41

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.

Neftali [Germán.Estévez] 08-06-2005 10:23:01

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;

zugazua2001 08-06-2005 16:23:52

Gracias genio.
 
Andaba bien. Gracias nuevamente

mcasso 25-03-2012 19:40:59

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.

Casimiro Notevi 25-03-2012 19:44:58

Recuerda usar los 'tags' para el código fuente, ejemplo:






.

mcasso 25-03-2012 21:12:31

Solo muestra imagen del primer registro
 
Si, gracias lo tomaré siempre en cuenta.


La franja horaria es GMT +2. Ahora son las 22:34:30.

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