Ver Mensaje Individual
  #3  
Antiguo 24-06-2017
rmeckbell rmeckbell is offline
Miembro
NULL
 
Registrado: feb 2016
Posts: 16
Reputación: 0
rmeckbell Va por buen camino
Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo

Hola...

Si alguien me puede ayudar con el siguiente tema, el asunto es que desarrolle una aplicación para Android donde trato de guardar una imagen a una base de datos y a su vez luego recuperar la imagen y mostrarla en un objeto TImage..el tema es que guadar y abrir imágenes desde un archivo si lo logro hacer,, sin embargo con una base de datos se me complica, pues he buscado en varios foros y los ejemplo que dan es cargar la imagen desde un archivo y luego guardarla a la base de datos, pero lo que ocupo es que la imagen tomada directamente desde mi aplicación en el celular, la pueda guardar directamente al campo Blob en la base de datos Interbase en un servidor externo, el problema que tengo no es la conexion con la base de datos sino el poder guardar la imagen en memoria directamente al campo imagen en la base de datos.

Estos son los procedimientos que desarrolle, les agradecerìa cualquier tipo de ayuda.
Código Delphi [-]
procedure TAccessCameraAppForm.Button1Click(Sender: TObject);
  //recuperar imagen
  var  Stream: TStream;

  begin

 fdquery1.Close;
 fdquery1.SQL.Clear;
 fdquery1.SQL.add('select Imagen from Casos where codigo = :code');
 fdquery1.ParamByName('code').AsInteger:= 1;
 fdquery1.open;
 Stream := TMemoryStream.Create;
 Stream := fdquery1.CreateBlobStream(fdquery1.FieldByName('Imagen'), bmRead);
 fdquery1.Close;

  imgcameraImage.Bitmap.LoadFromStream(Stream);  //se indica un error en el bitmap que se carga
  //desde la base de datos

 Stream.Free;                 // liberamos...

 end;

procedure TAccessCameraAppForm.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
      //guardar imagen
var picturename,ruta:string;
        SaveParams: TBitmapCodecSaveParams;
        vstream:TStream;
         codigo:integer;
begin



  { Assign the image retrieved from the Camera to the TImage component. }
  imgCameraImage.Bitmap.Assign(Image);
 vstream :=TMemoryStream.Create;


 imgcameraImage.Bitmap.SaveToStream(VStream);


 fdquery1.Close;
 fdquery1.SQL.Clear;
 fdquery1.SQL.add('select max(codigo) from Casos');
 fdquery1.open;
 codigo := fdquery1.Fields.Fields[0].Value+1;

 fdquery1.Close;
 fdquery1.SQL.Clear;
 fdquery1.SQL.Add('Insert Into Casos (Codigo,Nombre,Imagen) VALUES(:code,:name,:foto)');
 fdquery1.ParamByName('name').DataType := ftString;
 fdquery1.ParamByName('name').AsString:='Jorge';
 fdquery1.ParamByName('code').DataType := ftInteger;
 fdquery1.ParamByName('code').AsInteger:= codigo;
 fdquery1.ParamByName('foto').DataType := ftBlob;
  fdquery1.ParamByName('foto').LoadFromStream(vstream,ftBlob);
 fdquery1.ExecSQL;
 vstream.Free;
 fdquery1.Close;
  
  imgCameraImage.Free;

end;

Última edición por Neftali [Germán.Estévez] fecha: 26-06-2017 a las 09:14:43. Razón: Añadir TAG's al código
Responder Con Cita