Delphi 7 - Firebird 1.5 - Gravar Foto
Utilizo Firebird 1.5, Delphi 7 e ligo o BD com os componentes DBExpress.
Minha dúvida é como gravar uma imagem num campo blob.
Já tentei ´ClientDataSetClientes.FieldByName(´FOTO´) as TBlobField).LoadFromFile(´C:\Fotos\Foto1.jpg´)´, mas essa função não é aceita pelo Delphi - nem compila.
Alguém poderia me ajudar?
Obrigado.
Minha dúvida é como gravar uma imagem num campo blob.
Já tentei ´ClientDataSetClientes.FieldByName(´FOTO´) as TBlobField).LoadFromFile(´C:\Fotos\Foto1.jpg´)´, mas essa função não é aceita pelo Delphi - nem compila.
Alguém poderia me ajudar?
Obrigado.
Valdirdill
Curtidas 0
Respostas
Elsoft
25/05/2005
Caro Valdirdill,
Estou vendo que você quer gravar fotos JPG certo??, então vamos lá;
if OpenDialog.Execute then
begin
if vStatus = ´I´ then
DM.cdsFotos.Insert
else if vStatus = ´A´ then
DM.cdsFotos.Edit;
Image1.Picture.LoadFromFile(OpenDialog.FileName);
DM.cdsFotosFoto.LoadFromFile(OpenDialog.FileName);
DM.cdsFotos.Post;
end;
onde o DM.cdsFotos é o meu clientdataset, Image1 você ja sabe,
por que eu quero visualizar na tela a imagem que esta sendo gravada.
Pronto já esta gravado.
Para visualizar ja é um pouco mais complicado, eu utilizo uma procedure
ja eu passo o campo blob e o nome do componente imagem1.
procedure TfrmCadAssociados.Imagem(campo:tblobfield;foto:timage);
var BS:TStream; MinhaImagem:TJPEGImage;
begin
if campo.AsString <> ´´ Then
begin
BS := TStream.Create;
BS := Campo.DataSet.CreateBlobStream((campo as Tblobfield),bmread);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
end
else
Foto.Picture.Assign(nil);
end;
quando você for abrir a tabela ou no evento do dbnavigator ou botao de
navegação que vc tiver; Last, Next, Prior e First. Coloque assim
DM.cdsFotos.Next;
Image(DM.cdsFotosFoto,Image1); e pronto a imagem vai ser visualizada
OK. precisar pergunte novamente. :D
Estou vendo que você quer gravar fotos JPG certo??, então vamos lá;
if OpenDialog.Execute then
begin
if vStatus = ´I´ then
DM.cdsFotos.Insert
else if vStatus = ´A´ then
DM.cdsFotos.Edit;
Image1.Picture.LoadFromFile(OpenDialog.FileName);
DM.cdsFotosFoto.LoadFromFile(OpenDialog.FileName);
DM.cdsFotos.Post;
end;
onde o DM.cdsFotos é o meu clientdataset, Image1 você ja sabe,
por que eu quero visualizar na tela a imagem que esta sendo gravada.
Pronto já esta gravado.
Para visualizar ja é um pouco mais complicado, eu utilizo uma procedure
ja eu passo o campo blob e o nome do componente imagem1.
procedure TfrmCadAssociados.Imagem(campo:tblobfield;foto:timage);
var BS:TStream; MinhaImagem:TJPEGImage;
begin
if campo.AsString <> ´´ Then
begin
BS := TStream.Create;
BS := Campo.DataSet.CreateBlobStream((campo as Tblobfield),bmread);
MinhaImagem := TJPEGImage.Create;
MinhaImagem.LoadFromStream(BS);
Foto.Picture.Assign(MinhaImagem);
BS.Free;
MinhaImagem.Free;
end
else
Foto.Picture.Assign(nil);
end;
quando você for abrir a tabela ou no evento do dbnavigator ou botao de
navegação que vc tiver; Last, Next, Prior e First. Coloque assim
DM.cdsFotos.Next;
Image(DM.cdsFotosFoto,Image1); e pronto a imagem vai ser visualizada
OK. precisar pergunte novamente. :D
GOSTEI 0
Valdirdill
25/05/2005
Obrigado pela ajuda.
Mas eu estava pensando utilizar o DBImage em vez do Image.
Será que é possível?
Mas eu estava pensando utilizar o DBImage em vez do Image.
Será que é possível?
GOSTEI 0
Gandalf.nho
25/05/2005
Vc pode tentar o componente citado nesse tópico para substituir o DBImage [url]http://forum.clubedelphi.net/viewtopic.php?t=56736[/url]
GOSTEI 0
Prmas
25/05/2005
Eu utilizo imagens no Firebird e leio pelo DBImage.
Funciona que é uma beleza.
E só tratar a imagem como TPicture, assim você poderá importar tanto BMP como JPEG que o DBImage conseguirá ler.
segue a função que utilizo
function Imagem(DBImage:TDBImage): boolean;
var Imagem : TPicture;
begin
if DM.OpenImagem.Execute then
begin
Imagem := tPicture.create();
Imagem.LoadFromFile(DM.OpenImagem.FileName);
Clipboard.Assign(Imagem);
DBImage.PasteFromClipboard;
Imagem.Free;
end;
Result:=True;
end;
Espero ter ajudado.
Marcos
Funciona que é uma beleza.
E só tratar a imagem como TPicture, assim você poderá importar tanto BMP como JPEG que o DBImage conseguirá ler.
segue a função que utilizo
function Imagem(DBImage:TDBImage): boolean;
var Imagem : TPicture;
begin
if DM.OpenImagem.Execute then
begin
Imagem := tPicture.create();
Imagem.LoadFromFile(DM.OpenImagem.FileName);
Clipboard.Assign(Imagem);
DBImage.PasteFromClipboard;
Imagem.Free;
end;
Result:=True;
end;
Espero ter ajudado.
Marcos
GOSTEI 0