Ir al contenido



Foto

Descargar imagen de BD mysql tipo Blob a la Pc

blob mysql delphi

Mejor respuesta Delphius , 22 enero 2019 - 02:04

Si ya tienes la Imagen en un TImage entonces lo único que necesitas es hacer un:


delphi
  1. Image1.Picture.SaveToFile('Ruta' + '.jpg');

Y si dispones de un TSaveDialog o un TSavePictureDialog puedes usarlo para elegir la ruta y pasarsela al SaveToFile para guardarla en la ruta elegida:


delphi
  1. if SavePictureDialog1.Execute
  2. then Image1.Picture.SaveToFile(SavePictureDialog1.FileName + '.jpg');

No requiere de más trabajo la verdad.

 

Saludos,

Ir al mensaje completo


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

#1 Koalasoft

Koalasoft

    Advanced Member

  • Miembros
  • PipPipPip
  • 141 mensajes
  • LocationMéxico

Escrito 22 enero 2019 - 11:04

Buenos dias, alguien tendra un ejemplo sobre lo siguente..
 
Ya tengo los procedimientos para guardar/actualizar una imagen a una BD mysql con un campo Blob, de igual manera puedo hacer la consulta y mostrar la imagen en un Timage, .. pero .. 
 
Hay alguna forma que ... después de consultar y mostrar la imagen en el componente TImage, esta imagen poder descargarla a la PC (formato jpg)?
 
Saludos !! ...

  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.247 mensajes
  • LocationArgentina

Escrito 22 enero 2019 - 02:04   Mejor respuesta

Si ya tienes la Imagen en un TImage entonces lo único que necesitas es hacer un:


delphi
  1. Image1.Picture.SaveToFile('Ruta' + '.jpg');

Y si dispones de un TSaveDialog o un TSavePictureDialog puedes usarlo para elegir la ruta y pasarsela al SaveToFile para guardarla en la ruta elegida:


delphi
  1. if SavePictureDialog1.Execute
  2. then Image1.Picture.SaveToFile(SavePictureDialog1.FileName + '.jpg');

No requiere de más trabajo la verdad.

 

Saludos,


  • 1

#3 Koalasoft

Koalasoft

    Advanced Member

  • Miembros
  • PipPipPip
  • 141 mensajes
  • LocationMéxico

Escrito 22 enero 2019 - 02:11

Muchas gracias igual me sirvió de ayuda, lo hice de la siguiente manera ..


delphi
  1. Var
  2. FileStream: TFileStream;
  3. BlobStream: TStream;
  4. ----
  5.  
  6. with DMod1.ADOQueryCtrlONT do
  7. begin
  8. if (SavePictureDialog1.Execute) then
  9. begin
  10. try
  11. FileStream := TFileStream.Create(SavePictureDialog1.FileName,fmCreate);
  12. BlobStream := CreateBlobStream(DMod1.ADOQueryCtrlONT.FieldByName('IMGONT'),bmRead);
  13. FileStream.CopyFrom(BlobStream,BlobStream.Size-BlobStream.Position);
  14. msInfo('La imagen se descargo correctamente.','Imagen Descargada');
  15. BlobStream.Free;
  16. FileStream.Free;
  17. except
  18. // ------------------------------------------
  19. MSG:='Ocurrió un error al guardar la imagen. ';
  20. Application.MessageBox(PChar(MSG),'ERROR !!!', MB_ICONSTOP );
  21. exit;
  22. end;
  23. end;
  24. end;

Acepto sugerencia o mejoras para esto ... gracias .. 


  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.247 mensajes
  • LocationArgentina

Escrito 22 enero 2019 - 03:23

Pues no hacía falta hacerlo por TStream si ya la tenías cargada en el TImage. Por como yo estaba entendiendo, tu ya recuperabas desde el BLOB y lo estabas mostrando en el TImage.

Si era así, como dije, el código que te puse funciona.

 

El código que tu pusiste está pensado para cuando no hace falta visualizarla, ni depender de un TImage, y recuperar desde la propia DB sin pasar por algún "intermedio". Es otra alternativa y válida.

 

Pero como dije, si tu ya hacías una conversión desde el BLOB para traerlo a un TPicture. Una vez cargada la imagen en éste, y "descargarla" se hace trivial con en SaveToFile() del Picture.

 

Saludos,


  • 1

#5 Koalasoft

Koalasoft

    Advanced Member

  • Miembros
  • PipPipPip
  • 141 mensajes
  • LocationMéxico

Escrito 22 enero 2019 - 05:25

Pues no hacía falta hacerlo por TStream si ya la tenías cargada en el TImage. Por como yo estaba entendiendo, tu ya recuperabas desde el BLOB y lo estabas mostrando en el TImage.

Si era así, como dije, el código que te puse funciona.

 

El código que tu pusiste está pensado para cuando no hace falta visualizarla, ni depender de un TImage, y recuperar desde la propia DB sin pasar por algún "intermedio". Es otra alternativa y válida.

 

Pero como dije, si tu ya hacías una conversión desde el BLOB para traerlo a un TPicture. Una vez cargada la imagen en éste, y "descargarla" se hace trivial con en SaveToFile() del Picture.

 

Saludos,

 

Totalmente de acuerdo, funciona perfectamente como comentas ... y de igual manera gracias por que me iluminaste para futuras ideas con esto ...

 

Saludos mi buen !! 


  • 0





Etiquetado también con una o más de estas palabras: blob, mysql, delphi