Fórum Como carregar foto no componente TImagem? #348432
05/11/2007
0
O campo Foto está definido assim: blob sub_type 0;
Eu estou salvando no banco a imagem desta forma IBStoredProc1.ParamByName(´FOTO´).LoadFromFile(OpenPictureDialog1.FileName, ftBlob); não sei muito bem se é correto salvar imagems desta maneira.
Esta imagem é a foto do usuario então pensei armazenar no campo Foto da tabela.
Queria carregar a imagem salva do campo Foto para o componente TImage, como fazer isso?
agradeço,
Pestana.
Pestana_
Curtir tópico
+ 0Posts
05/11/2007
Alexandrej
Não pode usar TDBImage? Se não der utilize um TMemoryStream.
Gostei + 0
05/11/2007
Pestana_
Eu não posso salvar em disco para depois carregar a foto no TImage eu precisava carregar direto do banco para o TImage.
agradeço quem me ajudar,
Pestana.
Gostei + 0
05/11/2007
Pestana_
Não pode usar TDBImage? Se não der utilize um TMemoryStream.[/quote:92c511d413]
alexandrej, eu nunca utilizei o TMemoryStream vou pesquisar na web a respeito, mas se você poder dar uma ajudinha eu agradeço.
abraços,
Pestana.
Gostei + 0
05/11/2007
Alexandrej
Não pode usar TDBImage? Se não der utilize um TMemoryStream.[/quote:21dd3eb736]
alexandrej, eu nunca utilizei o TMemoryStream vou pesquisar na web a respeito, mas se você poder dar uma ajudinha eu agradeço.
abraços,
Pestana.[/quote:21dd3eb736]
Estou escrevendo de cabeça, provavelmente está errado, mas é +/- assim:
var
lsAux: TMemoryStrem;
begin
lsAux := TMemoryStream.Create;
try
ComponenteDoBanco.SaveToStream(lsAux);
TImage.LoadFromStream(lsAux);
finally
lsAux.Free;
end;
Falow?
Gostei + 0
05/11/2007
Pestana_
se está correto o que fiz.
// para gravar a imagem no banco. procedure TForm1.btnGravarClick(Sender: TObject); begin IBStoredProc1.ParamByName(´FOTO´).LoadFromFile(OpenPictureDialog1.FileName, ftBlob); IBStoredProc1.ExecProc; IBTransaction1.Commit; end;
// para retornar a imagem contida no banco para o componente TImage. procedure TForm1.btnRetornarClick(Sender: TObject); begin RetornarImagem; end; Procedure TForm1.RetornarImagem; var MemStm : TMemoryStream; begin if not IBQuery1.FieldByName(´foto´).IsNull then begin MemStm := TMemoryStream.Create; IBQuery1FOTO.SaveToStream(MemStm); try MemStm.Position := 0; Image1.Picture.Bitmap.LoadFromStream(MemStm); Image1.Repaint; finally MemStm.Free; end; end; end;
// para limpar o componente TImage. procedure TForm1.btnLimparClick(Sender: TObject); begin Image1.Picture := nil; end;
---------------------
agora está acontecendo um outro problema, estou tentando carregar imagem do tipo JPG, mas não estou conseguindo.
procedure TForm1.RetornarJPGClick(Sender: TObject); var MemStm : TMemoryStream; JPG : TJpegImage; begin if not IBQuery1.FieldByName(´foto´).IsNull then begin MemStm := TMemoryStream.Create; Jpg := TJpegImage.create; IBQuery1FOTO.SaveToStream(MemStm); Jpg.LoadFromStream(MemStm); Image1.Picture.Assign(Jpg); MemStm.Destroy; jpg.free; end else Image1.Picture.assign(nil); end;
agradeço,
Pestana.
Gostei + 0
06/11/2007
Pestana_
Gostei + 0
06/11/2007
Pestana_
porque eu só consigo retornar imagem [b:38dd8526ee]Bmp[/b:38dd8526ee] através da rotina [b:38dd8526ee]RetornarImagem[/b:38dd8526ee]. Será que estou fazendo algo de errado? precisa mesmo desenvolver uma outra rotina para retornar imagem [b:38dd8526ee]Jpg[/b:38dd8526ee], caso sim, como descobrir se a imagem no banco é um Jpg?
agradeço,
Pestana.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)