Fórum Delphi 7 - Firebird 1.5 - Gravar Foto #282928

25/05/2005

0

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.


Valdirdill

Valdirdill

Responder

Posts

25/05/2005

Elsoft

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


Responder

Gostei + 0

25/05/2005

Valdirdill

Obrigado pela ajuda.
Mas eu estava pensando utilizar o DBImage em vez do Image.

Será que é possível?


Responder

Gostei + 0

25/05/2005

Gandalf.nho

Vc pode tentar o componente citado nesse tópico para substituir o DBImage [url]http://forum.clubedelphi.net/viewtopic.php?t=56736[/url]


Responder

Gostei + 0

25/05/2005

Prmas

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


Responder

Gostei + 0

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

Aceitar