Ver Mensaje Individual
  #13  
Antiguo 18-10-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El "formato" ya lo tenes, es el stream o todos los bytes. Eso ya es la imagen con el formato. Luego, todos los archivos tienen una cabecera en donde se guarda informacion sobre que tipo de archivo y que formato tiene. Pero creo que estas complicandote con cosas que ya estan resueltas

Lo unico que tenes que hacer es guardar un "valor" y luego recuperar y mostrar ese "valor". Tipicamente lo que se hace es pasar la imagen a algun descendiente de TStream (por ejemplo, TMemoryStream) y se envia un comando a la BD para que guarde ese stream.

Luego, haces un query por ese campo, lo obtienes como stream, y se lo pasas al componente de imagen

Codigo medio de memoria, pero la idea es esta:

Código Delphi [-]
procedure GuardarImagen(Imagen: TImage);
var
  StreamImagen: TStream;
begin
  qry := crear tu componente query 
  qry.Connection := le asignas la conexion
  qry.SQL.Text := 'INSERT INTO TABLA (CampoImagen) VALUES (:CampoImagen)';
  StreamImagen := TMemoryStream.Create;
  try
     Imagen.SaveToStream(StreamImagen);
    StreamImagen.Position := 0;
    qry.ParamByName('CampoImagen').AsSteam := StreamImagen;
    // puede ser en lugar de .AsSteam, .Value, o .LoadFromStream; depende de los componentes
    qry.Execute;
  finally
   StreamImagen.Free;
  end;
end

Código Delphi [-]
procedure MostrarImagen;
begin
  qry := ...
  qry.Open;
   Image1.LoadFromStream(qry.FieldByName('CampoImagen').AsStream);
end;

Tambien es posible pasar la imagen a un monton de otras representaciones; por ej BASE64 es muy usada
Responder Con Cita