Salvar Imagem no FireBird

Delphi

29/05/2006

Estou querendo salvar uma imagem no banco de dados, a tabela possui dois campos: CODIGO - Char(8) e IMAGEM - Blob Type2.

Li muitos tópicos e mesmo assim não consegui armazenar a imagem.

Os tópicos apresentados mostram como salvar a imagem vinda de um OpenDialog ou OpenPictureDialog, mas a minha imagem está no form e vai ser modificada (desenhada algumas linhas e pontos nela) e esta imagem que está no Image1 que foi alterar é a que tem que ser salva no banco. Já tentei da seguinte forma e não consegui:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   BinFile : TMemoryStream;
   Imagem  : TJPEGIMAGE;
begin
   Imagem.Assign(Image1.Picture.Bitmap);
   BinFile := TMemoryStream.Create;
   Imagem.SaveToStream(BinFile);

   quIMAGEM.Close;
   quIMAGEM.ParamByName(´CODPAC´).Value := ed1.Text;
   quIMAGEM.ParamByName(´IMAGEM´).LoadFromStream(Binfile, ftBlob);
   quIMAGEM.ExecSQL;
end;


Alguém pode me dizer onde está o erro ou me dizer de que outra maneira eu posso salvar uma imagem que já está num TImage.


Dgsfilho

Dgsfilho

Curtidas 0

Respostas

Marcio.theis

Marcio.theis

29/05/2006

Acho que pode lhe ajuda:
http://forum.clubedelphi.net/viewtopic.php?t=70406


GOSTEI 0
Dgsfilho

Dgsfilho

29/05/2006

A minha imagem já está num TImage, ela não vai ficar em nenhum diretório, já está no próprio executável, onde o usuário vai fazer alguns riscos e pontos e salvá-la no banco. Tem algum jeito de salvar sem ter que usar LoadFromFile(´C:\imagem1.jpg´); por exemplo?

Quero cadastrar um código e a imagem que está no meu TImage.

Alguém sabe?


GOSTEI 0
Marcio.theis

Marcio.theis

29/05/2006

Bom... A idéia que tenho de princípio é vc salvar ela como temporária em uma pasta, gravar no banco e depois excluir ela...


GOSTEI 0
Dgsfilho

Dgsfilho

29/05/2006

Eh a idéia é boa, vou tentar!


GOSTEI 0
Helderjr

Helderjr

29/05/2006

DGSFilho

Não sei se já resolveu, mas segue minha rotina q funciona legal, inclusive foi em cima do seu fonte que ajustei.

procedure TForm1.BitBtn1Click(Sender: TObject)
var BS:TMemoryStream;
MinhaImagem : TJPEGImage;
begin
BS := TMemoryStream.Create;
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromFile(Dialog.FileName);
MinhaImagem.SaveToStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
Inicia Transação...
Update ....
ParamByName(´Codigo´).Value := EdCodigo.Value;
ParamByName(´Foto´).LoadFromFile(Dialog.FileName,ftBlob);
ExecSQL();
Commit transação...
Tabela.Refresh;
end;


GOSTEI 0
Dgsfilho

Dgsfilho

29/05/2006

valeu pela dica. Obrigado!


GOSTEI 0
Chapolin

Chapolin

29/05/2006

TblobField(dm.suaquery.fieldbyname(´Imagem´)).loadfromfile(´c:\seu_arquivo.qqercoisa´);


GOSTEI 0
POSTAR