Hola.
Estos procedimientos te van a servir para cualquier descendiente de
TDataSet:
Código Delphi
[-]
uses JPeg;
procedure JpgToBlobField( Jpg: TJPEGImage; DataSet: TDataSet; const FieldName: string );
var
Stream : TStream;
begin
Stream := TMemoryStream.Create;
try
Jpg.SaveToStream( Stream );
Stream.Seek( 0, soFromBeginning );
DataSet.Edit;
TBlobField( DataSet.FieldByName(FieldName) ).LoadFromStream( Stream );
DataSet.Post;
finally
Stream.Free;
end;
end;
procedure BlobFieldToJpg( DataSet: TDataSet; const FieldName: string; Jpg: TJPEGImage );
var
Stream : TStream;
begin
Stream := TMemoryStream.Create;
try
TBlobField( DataSet.FieldByName(FieldName) ).SaveToStream( Stream );
Stream.Seek( 0, soFromBeginning );
Jpg.LoadFromStream( Stream );
finally
Stream.Free;
end;
end;
Ejemplos de uso:
Código Delphi
[-]
procedure TForm1.btnSaveImageClick( Sender: TObject );
var
Jpg: TJPEGImage;
pd : TOpenPictureDialog;
begin
pd := TOpenPictureDialog.Create( nil );
try
pd.Filter := 'JPG Files (*.JPG) | *.JPG';
pd.Options := [ofFileMustExist];
if pd.Execute then
begin
Jpg := TJPEGImage.Create;
try
Jpg.LoadFromFile( pd.FileName );
JpgToBlobField( Jpg, tuDataSet, 'IMAGEN' );
finally
Jpg.Free;
end;
end;
finally
pd.Free;
end;
end;
procedure TForm1.btShowImageClick( Sender: TObject );
var
Jpg: TJPEGImage;
begin
Jpg := TJPEGImage.Create;
try
BlobFieldToJpg( tuDataSet, 'IMAGEN', Jpg );
Image1.Picture := nil;
Image1.Picture.Assign( Jpg );
finally
Jpg.Free;
end;
end;
Saludos