Como exibir uma imagem salva no banco de dados?
Recuperar uma imagem jpg contida em um campo blob?
Neste exemplo, uma imagem é carregada de um campo blob e exibida em um TImage.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| // É necessário estar declarado jpeg, Classes e DB
{ Em versões mais recentes, declare Vcl.Imaging.jpeg,
System.Classes e Data.DB }
procedure RefreshImage(Field : TField; Img : TImage);
var
vJpeg : TJPEGImage;
vStream : TMemoryStream;
begin
{ Verifica se o campo esta vázio. }
if not Field.IsNull then
begin
{ Cria objeto do tipo TJPEG, e objeto do tipo MemoryStream}
vJpeg := TJPEGImage.Create;
vStream := TMemoryStream.Create;
{ Trata o campo como do tipo BLOB e salva o seu conteudo na memória. }
TBlobField(Field).SaveToStream(vStream);
{ Ajusta a posicao inicial de leitura da memória }
vStream.Position := 0;
{ Carrega da memoria os dados, para uma estrutura do tipo TJPEG
(A partir da posicao 0)}
vJpeg.LoadFromStream(vStream);
{ Exibe o jpg no Timage. }
Img.Picture.Assign(vJpeg);
{ Libera a memoria utilizada pelos componentes de conversão }
vJpeg.Free;
vStream.Free;
end;
end;
// Exemplo de uso
procedure TForm1.Button1Click(Sender: TObject);
begin
RefreshImage(DataSet1.FieldByName('LOGOTIPO'), ImgLogotipo);
end; |
// É necessário estar declarado jpeg, Classes e DB
{ Em versões mais recentes, declare Vcl.Imaging.jpeg,
System.Classes e Data.DB }
procedure RefreshImage(Field : TField; Img : TImage);
var
vJpeg : TJPEGImage;
vStream : TMemoryStream;
begin
{ Verifica se o campo esta vázio. }
if not Field.IsNull then
begin
{ Cria objeto do tipo TJPEG, e objeto do tipo MemoryStream}
vJpeg := TJPEGImage.Create;
vStream := TMemoryStream.Create;
{ Trata o campo como do tipo BLOB e salva o seu conteudo na memória. }
TBlobField(Field).SaveToStream(vStream);
{ Ajusta a posicao inicial de leitura da memória }
vStream.Position := 0;
{ Carrega da memoria os dados, para uma estrutura do tipo TJPEG
(A partir da posicao 0)}
vJpeg.LoadFromStream(vStream);
{ Exibe o jpg no Timage. }
Img.Picture.Assign(vJpeg);
{ Libera a memoria utilizada pelos componentes de conversão }
vJpeg.Free;
vStream.Free;
end;
end;
// Exemplo de uso
procedure TForm1.Button1Click(Sender: TObject);
begin
RefreshImage(DataSet1.FieldByName('LOGOTIPO'), ImgLogotipo);
end;
Dúvidas ou sugestões, deixe nos comentários do post.
-
InfusTec
-
19.723 views
- 2 comentários
- 11 de março de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Obrigado!!
Usei e funcionou!!!
Olá, gostaria de saber onde saiu esse ImgLogotipo no final?