Problemas ao exibir uma imagem do BD em um TImage
24/09/2016
0
Boa Noite,
Preciso Fazer algo muito simples:
01 Pegar uma foto em uma Pasta e Grava-la no Banco de Dados
02 - Pegar esta foto gravada no banco e mostra-la em um TImage.
Já peguei centenas de exemplos na Net mas nenhum funcionou corretamente, alguém tem um exemplo simples de cada uma destas funções que funcione.
gravar a imagem no banco funcionou porem quando tento mostra-la no TImage está dando o seguinte erro:
Raised exception class EJPEG whith message 'JPEG error' #53
Ambiente: SO - Windows 8.1
Delphi - XE
Banco - Firebird 2
Preciso Fazer algo muito simples:
01 Pegar uma foto em uma Pasta e Grava-la no Banco de Dados
02 - Pegar esta foto gravada no banco e mostra-la em um TImage.
Já peguei centenas de exemplos na Net mas nenhum funcionou corretamente, alguém tem um exemplo simples de cada uma destas funções que funcione.
gravar a imagem no banco funcionou porem quando tento mostra-la no TImage está dando o seguinte erro:
Raised exception class EJPEG whith message 'JPEG error' #53
Ambiente: SO - Windows 8.1
Delphi - XE
Banco - Firebird 2
Amauri Alves
Curtir tópico
+ 0
Responder
Posts
25/09/2016
Eduardo Silva.
// Declare JPG em Uses
procedure TFormClientes.LoadImageFromField(Image: TImage;
ImageField: TBlobField);
var
MemStrm: TMemoryStream;
Jpg: TJPEGImage;
begin
if ImageField.IsNull then
begin
Image.Picture.Assign(nil);
exit;
end; // if
Jpg := TJPEGImage.create;
try
MemStrm := TMemoryStream.create;
try
ImageField.SaveToStream(MemStrm);
MemStrm.Seek(0, soFromBeginning);
with Jpg do
begin
PixelFormat := jf24Bit;
Scale := jsFullSize;
Grayscale := False;
Performance := jpBestQuality;
ProgressiveDisplay := True;
ProgressiveEncoding := True;
LoadFromStream(MemStrm);
end;
Image.Picture.Assign(Jpg) finally MemStrm.free;
end;
finally
Jpg.free;
end;
end;
// Para usar a procedure
procedure TFormClientes.DSDataChange(Sender: TObject; Field: TField);
begin
inherited;
if DS.DataSet.State in [dsBrowse] then
LoadImageFromField(FOTO, DM.FotosFOTO);
end;
[sds]
Eduardo Belo
beloelogica@gmail.com
procedure TFormClientes.LoadImageFromField(Image: TImage;
ImageField: TBlobField);
var
MemStrm: TMemoryStream;
Jpg: TJPEGImage;
begin
if ImageField.IsNull then
begin
Image.Picture.Assign(nil);
exit;
end; // if
Jpg := TJPEGImage.create;
try
MemStrm := TMemoryStream.create;
try
ImageField.SaveToStream(MemStrm);
MemStrm.Seek(0, soFromBeginning);
with Jpg do
begin
PixelFormat := jf24Bit;
Scale := jsFullSize;
Grayscale := False;
Performance := jpBestQuality;
ProgressiveDisplay := True;
ProgressiveEncoding := True;
LoadFromStream(MemStrm);
end;
Image.Picture.Assign(Jpg) finally MemStrm.free;
end;
finally
Jpg.free;
end;
end;
// Para usar a procedure
procedure TFormClientes.DSDataChange(Sender: TObject; Field: TField);
begin
inherited;
if DS.DataSet.State in [dsBrowse] then
LoadImageFromField(FOTO, DM.FotosFOTO);
end;
[sds]
Eduardo Belo
beloelogica@gmail.com
Responder
Clique aqui para fazer login e interagir na Comunidade :)