DBIMAGE LER JPG

Delphi

01/06/2013

Ola Galera,

estou precisando resgatar umas fotos no meu banco de dados (FIREBIRD) para que seja exibida em um dbimage, só que esta dando erro, li alguns fóruns que algumas pessoas dizem que não é possível. Existe alguma forma pelo Delphi 7 de mostrar imagens salvas no BD em formato JPG na tela?



Vlw!
Dennis Sobral

Dennis Sobral

Curtidas 0

Respostas

Wilton Júnior

Wilton Júnior

01/06/2013

Sim amo existe toda o campo que vc vai salvar a imagem te que ser do tipo blob subtype 1 se não me falha memoria.
O firebird grava até o capeta se precisar, mas vc deve testa a leitura com imagem jpg se tiver dando erro vc tem que gravar no banco de dados a imagem como bmp para que DBimage possa ler.

Procura no google e tem um monte de modelo que ja vi de cabeça agora não sei te falar como faz para gravar imagem no dbimage do delphi vc vera que maioria das vezes ele transforma qualquer imagem em jpg e outra deve usar a biblioteca jpg
declare ela no uses.

espero te ajudado.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

01/06/2013

Você tem que usar um TImage, e depois uma função pra carregar a imagem do banco nesse TImage.
Declare Jpeg nos uses, coloque um componente TImage e mude o nome pra Imagem, coloque um componente TIBQuery e deixe o nome IBQuery1.
Declare a procedure:
procedure CarregaImagem(iboQryTabelaImagem : TIBQuery; iboCampoImagem : TBlobField; bBMP : Boolean = False);


Coloque essa procedure em algum lugar, onde você a declarou:

procedure TForm1.CarregaImagem(iboQryTabelaImagem : TIBQuery; iboCampoImagem : TBlobField; bBMP : Boolean);
var
  BlobStream: TStream;
  JPEGImage: TJPEGImage;
  MS: TMemoryStream;
begin
  if iboCampoImagem.BlobSize <> 0 then
  begin
    if bBMP then
    begin
      BlobStream := iboQryTabelaImagem.CreateBlobStream(iboCampoImagem, bmRead);
      try
        Imagem.Picture.Bitmap.LoadFromStream(BlobStream);
      finally
        BlobStream.Free;
      end;
    end
    else
    begin
      try
        MS := TMemoryStream.Create;
        iboCampoImagem.SaveToStream(MS);
        JPEGImage := TJPEGImage.Create;
        JPEGImage.Assign( iboCampoImagem );
        Imagem.Picture.Assign( JPEGImage );
      finally
        MS.Free;
        JPEGImage.Free;
      end;
    end;
  end
  else
    Imagem.Picture := nil;
end;


Depois chame a procedure:

  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('SELECT IMAGEM FROM PRODUTO');
  IBQuery1.Open;
  if IBQuery1.IsEmpty then
    Exit;
  CarregaImagem(IBQuery1,TblobField(IBQuery1.FieldByName('IMAGEM')));


Obs.: Coloque o SELECT com o campo e tabela, assim como a filtragem necessária para localizar a imagem desejada.
GOSTEI 0
POSTAR