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
Amauri Alves

Amauri Alves

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar