Ir al contenido



Foto

Cargar una Imagen en Timage desde una BD Access


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

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 15 septiembre 2009 - 09:27

Hola, aquí regreso con mis preguntontas xD, quería sabe cómo puedo cargar en un TImage una imagen desde una BD Access, en el lado de la consulta estoy bien pero en la carga del Timage estoy estancado, espero me puedan ayudar.

Fleon xD
  • 0

#2 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 15 septiembre 2009 - 10:10

Forzosamente tiene que ser en un TImage? Porque tienes los TDBImages que solo relacionas el campo y listo.

Pero si lo que quieres es usar el TImage, entonces este código te podría ayudar:


delphi
  1. procedure MuestraImagen;
  2. var
  3.   stImage: TStream;
  4. begin
  5.   Image1.Picture := nil;
  6.   stImage := Query1.CreateBlobStream(Query1_CampoImagen, bmRead);
  7.   Image1.Picture.Graphic.LoadFromStream(stImage);
  8.   stImage.Free;
  9. end;



Espero te sirva, saludos.  (y)
  • 0

#3 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 15 septiembre 2009 - 11:43

Muchas gracias por responder razadi, sucede que me da un error, el code me queda así:



delphi
  1. procedure TFEmpleados.DBGrid1DblClick(Sender: TObject);
  2. var No1: String;
  3.     No2: Integer;
  4.     stImage: TStream;
  5. begin
  6. FHuella := TFHuella.Create(self);
  7.   try
  8.     FHuella.lbNombre.Caption := dsEmpleados.DataSet.FieldByName('name').AsString;
  9.     FHuella.lbApellido.Caption := dsEmpleados.DataSet.FieldByName('lastname').AsString;
  10.     No1 := dsEmpleados.DataSet.FieldByName('code').AsString;
  11.     No2 := StrToInt(No1);
  12.     EHuellas.Close;
  13.     EHuellas.SQL.Clear;
  14.     EHuellas.SQL.Text := 'Select Huella From Huellas Where Codigo = :Cod';
  15.     EHuellas.Parameters.ParamByName('Cod').Value := IntToStr(No2);
  16.     EHuellas.Open;
  17.  
  18.     //Cargamos la imagen de la huella en Plantilla1
  19.     stImage := TStream.Create;
  20.     FHuella.Plantilla1.Picture := nil;
  21.     stImage := EHuellas.CreateBlobStream(EHuellas.Fields[0], bmRead);
  22.     FHuella.Plantilla1.Picture.Graphic.LoadFromStream(stImage);
  23.     stImage.Free;
  24.     //Fin carga
  25.  
  26.     FHuella.ShowModal;
  27.   finally
  28.     FHuella.Free;
  29.   end;
  30. end;



y me da este error:

---------------------------
Debugger Exception Notification
---------------------------
Project WReporter.exe raised exception class EAccessViolation with message 'Access violation at address 004F3B4F in module 'Nominas.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.482 mensajes
  • LocationVenezuela

Escrito 15 septiembre 2009 - 11:46

Ese error sucede porque estas referenciando un objeto que no ha sido creado, ubica la linea que te da el error para poder ayudarte.
  • 0

#5 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 15 septiembre 2009 - 12:47

Gracias eduarcol, esta es la línea donde marca:



delphi
  1. FHuella.Plantilla1.Picture.Graphic.LoadFromStream(stImage);



Y también me pone este error:

[Warning] Empleados.pas(133): Constructing instance of 'TStream' containing abstract method 'TStream.Read'
[Warning] Empleados.pas(133): Constructing instance of 'TStream' containing abstract method 'TStream.Write'


Fleon xD
  • 0

#6 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 15 septiembre 2009 - 01:33

Fleon creo que estas cometiendo un error, no debes crear dos veces la variable TStream y creo que omtí la línea donde se declara el graphic



delphi
  1. FHuella.Plantilla1.Picture.Graphic := TBitmap.Create



en tu caso sería algo como esto


delphi
  1. procedure TFEmpleados.DBGrid1DblClick(Sender: TObject);
  2. var No1: String;
  3.     No2: Integer;
  4.     stImage: TStream;
  5. begin
  6.   FHuella := TFHuella.Create(self);
  7.   try
  8.     FHuella.lbNombre.Caption := dsEmpleados.DataSet.FieldByName('name').AsString;
  9.     FHuella.lbApellido.Caption := dsEmpleados.DataSet.FieldByName('lastname').AsString;
  10.     No1 := dsEmpleados.DataSet.FieldByName('code').AsString;
  11.     No2 := StrToInt(No1);
  12.     EHuellas.Close;
  13.     EHuellas.SQL.Clear;
  14.     EHuellas.SQL.Text := 'Select Huella From Huellas Where Codigo = :Cod';
  15.     EHuellas.Parameters.ParamByName('Cod').Value := IntToStr(No2);
  16.     EHuellas.Open;
  17.  
  18.     //Cargamos la imagen de la huella en Plantilla1
  19.     //stImage := TStream.Create;
  20.     FHuella.Plantilla1.Picture := nil;
  21.     {si es un bmp}
  22.     FHuella.Plantilla1.Picture.Graphic := TBitmap.Create;
  23.     {en caso de que sea un jpg
  24.     FHuella.Plantilla1.Picture.Graphic := TJpegImage.Create;
  25.     }
  26.     stImage := EHuellas.CreateBlobStream(EHuellas.Fields[0], bmRead);
  27.     FHuella.Plantilla1.Picture.Graphic.LoadFromStream(stImage);
  28.     stImage.Free;
  29.     //Fin carga
  30.  
  31.     FHuella.ShowModal;
  32.   finally
  33.     FHuella.Free;
  34.   end;
  35. end;



así te debe correr sin problema.

saludos
  • 0

#7 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 15 septiembre 2009 - 01:48

Hola razadi, probé y funciona cuando no hay imagen pero cuando hay me da error:

Cuando no es JPEG:

---------------------------
Debugger Exception Notification
---------------------------
Project WReporter.exe raised exception class EInvalidGraphic with message 'Bitmap image is not valid'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


Cuando es JPEG:

---------------------------
Debugger Exception Notification
---------------------------
Project WReporter.exe raised exception class EJPEG with message 'JPEG error #53'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


:(
  • 0

#8 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.939 mensajes
  • LocationMéxico

Escrito 15 septiembre 2009 - 01:53

Hola razadi, probé y funciona cuando no hay imagen pero cuando hay me da error:

Cuando no es JPEG:

---------------------------
Debugger Exception Notification
---------------------------
Project WReporter.exe raised exception class EInvalidGraphic with message 'Bitmap image is not valid'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


Cuando es JPEG:

---------------------------
Debugger Exception Notification
---------------------------
Project WReporter.exe raised exception class EJPEG with message 'JPEG error #53'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


:(



Solo necesitas agregar a tu uses la unidad JPEG

saludos


  • 0

#9 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 15 septiembre 2009 - 01:58

Hola Poliburro, gracias por contestar, ya tenía en el uses la unidad Jpeg :(
  • 0

#10 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.939 mensajes
  • LocationMéxico

Escrito 15 septiembre 2009 - 02:37

Hola Poliburro, gracias por contestar, ya tenía en el uses la unidad Jpeg :(

No habia puesto atención al código pero al parecer puedes meter allí tanto jpg como bmps, te aconsejop que agreges un campo que defina e tipo de imagen y de acuerdo a este tipo utilices el TBitmap o el TJPEG

saludos.
  • 0

#11 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 16 septiembre 2009 - 08:22

Hola Poliburro, gracias de nuevo, no sé si llegué a mencionarlo, pero la imagen está guardada en binario (creo) y no con la ruta :$ :$

Fleon xD
  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.482 mensajes
  • LocationVenezuela

Escrito 16 septiembre 2009 - 09:18

Hola Poliburro, gracias de nuevo, no sé si llegué a mencionarlo, pero la imagen está guardada en binario (creo) y no con la ruta :$ :$

Fleon xD


Es que depende de como se guarde, eso es a lo que se refiere Poli
  • 0