Salvar Imagem no FireBird
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:
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.
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
Curtidas 0
Respostas
Marcio.theis
29/05/2006
Acho que pode lhe ajuda:
http://forum.clubedelphi.net/viewtopic.php?t=70406
http://forum.clubedelphi.net/viewtopic.php?t=70406
GOSTEI 0
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?
Quero cadastrar um código e a imagem que está no meu TImage.
Alguém sabe?
GOSTEI 0
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
29/05/2006
Eh a idéia é boa, vou tentar!
GOSTEI 0
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;
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
29/05/2006
valeu pela dica. Obrigado!
GOSTEI 0
Chapolin
29/05/2006
TblobField(dm.suaquery.fieldbyname(´Imagem´)).loadfromfile(´c:\seu_arquivo.qqercoisa´);
GOSTEI 0