Jump to content


Photo

Descargar imagen de BD mysql tipo Blob a la Pc

blob mysql delphi

Best Answer Delphius , 22 January 2019 - 02:04 PM

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,

Go to the full post


  • Please log in to reply
4 replies to this topic

#1 Koalasoft

Koalasoft

    Advanced Member

  • Miembros
  • PipPipPip
  • 142 posts
  • LocationMéxico

Posted 22 January 2019 - 11:04 AM

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
  • 6296 posts
  • LocationArgentina

Posted 22 January 2019 - 02:04 PM   Best Answer

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
  • 142 posts
  • LocationMéxico

Posted 22 January 2019 - 02:11 PM

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
  • 6296 posts
  • LocationArgentina

Posted 22 January 2019 - 03:23 PM

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
  • 142 posts
  • LocationMéxico

Posted 22 January 2019 - 05:25 PM

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





Also tagged with one or more of these keywords: blob, mysql, delphi

IP.Board spam blocked by CleanTalk.