GARANTIR DESCONTO

Fórum Como carregar foto no componente TImagem? #348432

05/11/2007

0

galera já estou um bom tempo tentando carregar a imagem do campo Foto da tabela Usuario utilizando IBQuery, mas não estou conseguindo, o que estou fazendo de errado? O banco que estou utilizando é o Firebird 2.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_

Pestana_

Responder

Posts

05/11/2007

Alexandrej

galera já estou um bom tempo tentando carregar a imagem do campo Foto da tabela Usuario utilizando IBQuery, mas não estou conseguindo, o que estou fazendo de errado? O banco que estou utilizando é o Firebird 2.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.


Não pode usar TDBImage? Se não der utilize um TMemoryStream.


Responder

Gostei + 0

05/11/2007

Pestana_

é que eu não estou utilizando componentes do DataControls, queria que fosse mesmo o TImage.

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.


Responder

Gostei + 0

05/11/2007

Pestana_

[quote:92c511d413=´Pestana_´]galera já estou um bom tempo tentando carregar a imagem do campo Foto da tabela Usuario utilizando IBQuery, mas não estou conseguindo, o que estou fazendo de errado? O banco que estou utilizando é o Firebird 2.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.


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.


Responder

Gostei + 0

05/11/2007

Alexandrej

[quote:21dd3eb736=´alexandrej´][quote:21dd3eb736=´Pestana_´]galera já estou um bom tempo tentando carregar a imagem do campo Foto da tabela Usuario utilizando IBQuery, mas não estou conseguindo, o que estou fazendo de errado? O banco que estou utilizando é o Firebird 2.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.


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?


Responder

Gostei + 0

05/11/2007

Pestana_

alexandrej muito obrigado pela ajuda, aqui está rodando legal, mas gostaria que se possivel você verificasse
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.


Responder

Gostei + 0

06/11/2007

Pestana_

UP.


Responder

Gostei + 0

06/11/2007

Pestana_

é possivel o usuario inserir imagem no banco de extensão (Bmp ou Jpg) e retornar a imagem para o TImage?

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.


Responder

Gostei + 0

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

Aceitar