Cita:
Empezado por Caral
Hola
Este código lo Hizo nuestro amigo ChackAll:
Esta hecho para ado (access), pero sera facil cambiarlo a IBX (firebird).
Código Delphi [-]
implementation
{$R *.dfm}
uses jpeg;
var jpg: TJPEGImage;
procedure TForm1.FormCreate(Sender: TObject);
begin
jpg := TJPEGImage.Create;
end;
procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
if not OpenDialog1.Execute then Exit;
bmp := TBitmap.Create; bmp.LoadFromFile(OpenDialog1.FileName); jpg.Assign(bmp); bmp.Destroy;
ADOTable1.Open; ADOTable1.Insert; Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); jpg.SaveToStream(Stream); Stream.Destroy; ADOTable1.Post;
end;
procedure TForm1.Button2Click(Sender: TObject);
var Stream: TStream;
begin
ADOTable1.Open; ADOTable1.Last; Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmRead); jpg.LoadFromStream(Stream); Stream.Destroy; Image2.Picture.Assign(jpg);
end;
Esta bien detallado, creo que se entiende bien.
Saludos
|
Hola a Todos
Buscando una solución a mi problema, me encontré con este hilo. El procedimiento de guardar la imagen en el campo blob parece que lo hace sin problemas, sin embargo al tratar de obtener la imagen y asignarlo a un TImage me da problemas.
Estoy utilizando Delphi 5 con base de datos Firebird.
Les comparto el código
Procedimiento que guarda la Imagen:
procedure TfrmDetalleProducto.GuardarClick(Sender: TObject);
Var
tabla : tTable;
Stream: TStream;
bmp: TBitmap;
jpg : TJPEGImage;
begin
tabla := tTable.Create(nil);
tabla .DatabaseName := Sessions[0].Databases[0].DatabaseName;
tabla .TableName := 'Productos';
tabla .Active := True;
tabla.Insert;
jpg := TJPEGImage.Create;
bmp := TBitmap.Create;
bmp.LoadFromFile(Global.POS.FRutaImagenBtn + EdRutaImagen.text);
jpg.Assign(bmp);
bmp.Destroy;
Stream := tabla.CreateBlobStream(tabla.FieldByName('IMAGEN'), bmWrite);
jpg.SaveToStream(Stream);
Stream.Destroy;
tabla.post;
end;
Procedimiento para asignar la imagen al componente tImage
procedure TfrmDetalleProducto.CargarImagen(Sender: TObject);
Var
tabla : tTable;
Stream: TStream;
bmp: TBitmap;
jpg: TJPEGImage;
begin
tabla := tTable.Create(nil);
tabla .DatabaseName := Sessions[0].Databases[0].DatabaseName;
tabla .TableName := 'Productos';
tabla .Active := True;
If tabla.Locate('CODIGO',245,[loCaseInsensitive]) then
begin
jpg := TJPEGImage.Create;
Stream := tabla.CreateBlobStream(tabla.FieldByName('IMAGEN'), bmRead);
jpg.LoadFromStream(Stream); <------------ AQUI DA EL ERROR
Stream.Destroy;
bmp.Assign(jpg);
ImgProducto.Picture.Assign(bmp);
end;
end;
El error que despliega es: Project x.exe raised exception class EJPEG with message 'JPEG error #50'. Process stopped. Use Step or Run to continue.
Agradezco me puedan colaborar
Saludos