gravar jpg banco fb 1.5
boa tarde a todos, estou tentando gravaruma imagem jpg no banco e depois exibi-la... sei q o correto é gravar o caminho, mais nesse caso preciso realente gravr a img. segue o q estou fazendo:
var
ImgStr : TMemoryStream;
begin
AcquireJpg(Jpg, 10);
ImgStr := TMemoryStream.Create;
JPG.SaveToStream(ImgStr);
with cdsIMG do
begin
Active := false;
ImgStr.Position := 0;
Params.ParamByName(´vdescricao´).AsString := Edit1.Text;
Params.ParamByName(´vDigitalizacao´).LoadFromStream (ImgStr ,ftTypedBinary);
Execute;
end;
PS.
cdsIMG.commandtext := ´insert into documentos(descricao, foto) values( :vdescricao, :vdigitalizacao);
os parametros no cds
vDescricao é ftString
vDigitalizacao é ftTypedBinary ´ja tentei com ftOraBlob, ftGraphic´
o codigo asima ´grava´ mais no ibexpert não consigo v a imagem, aparece em branco, sendo q tem algo gravado no campo, mais não sei se tá da forma correta...
na aplicação esto carregando assim:
try
ImgStr := TMemoryStream.Create;
Jpg := TJpegImage.Create;
(cdsIMG.FieldByName(´documento´) as
TBlobField).SaveToStream(ImgStr);
ImgStr.Position := 0;
Jpg.LoadFromStream(ImgStr);
Image1.Picture.Assign(Jpg);
finally
Jpg.Free;
ImgStr.Free;
end;
da um erro
stream read error
Grato.
var
ImgStr : TMemoryStream;
begin
AcquireJpg(Jpg, 10);
ImgStr := TMemoryStream.Create;
JPG.SaveToStream(ImgStr);
with cdsIMG do
begin
Active := false;
ImgStr.Position := 0;
Params.ParamByName(´vdescricao´).AsString := Edit1.Text;
Params.ParamByName(´vDigitalizacao´).LoadFromStream (ImgStr ,ftTypedBinary);
Execute;
end;
PS.
cdsIMG.commandtext := ´insert into documentos(descricao, foto) values( :vdescricao, :vdigitalizacao);
os parametros no cds
vDescricao é ftString
vDigitalizacao é ftTypedBinary ´ja tentei com ftOraBlob, ftGraphic´
o codigo asima ´grava´ mais no ibexpert não consigo v a imagem, aparece em branco, sendo q tem algo gravado no campo, mais não sei se tá da forma correta...
na aplicação esto carregando assim:
try
ImgStr := TMemoryStream.Create;
Jpg := TJpegImage.Create;
(cdsIMG.FieldByName(´documento´) as
TBlobField).SaveToStream(ImgStr);
ImgStr.Position := 0;
Jpg.LoadFromStream(ImgStr);
Image1.Picture.Assign(Jpg);
finally
Jpg.Free;
ImgStr.Free;
end;
da um erro
stream read error
Grato.
Camilo
Curtidas 0
Respostas
L_carlos
16/04/2009
Eu gravo JPEG em um campo BLOB no firebird do seguinte modo:
Em USES coloco JPEG
Depois
var
b:TMemoryStream;
Para gravar no campo BLOB:
if (imgFOTO.Picture.Graphic <> nil) then
begin
b:=TMemoryStream.Create;
imgFOTO.Picture.Graphic.SaveToStream(b);
ParamByName(´des_FOTO´).LoadFromStream(b,ftBlob);
b.Destroy ;
end;
Onde ImgFOTO é um TIMAGE.
Luiz
Em USES coloco JPEG
Depois
var
b:TMemoryStream;
Para gravar no campo BLOB:
if (imgFOTO.Picture.Graphic <> nil) then
begin
b:=TMemoryStream.Create;
imgFOTO.Picture.Graphic.SaveToStream(b);
ParamByName(´des_FOTO´).LoadFromStream(b,ftBlob);
b.Destroy ;
end;
Onde ImgFOTO é um TIMAGE.
Luiz
GOSTEI 0
Camilo
16/04/2009
olá meu cro L_CARLOS, deu certo, é q como eu estou uando n-tier com BSS e RemoteDataModule, estava colocando os parametros no CDS e não no sqlDataSet, quando eu coloquei todos os componentes no cliente e fiz um teste local, funcionou blzzz, mais o caso agora é, como mandar o conteúdo da var TMemoryStream do client pro servidor, sendo q lá eu coloque como parametro?? estou tentando de varios tipos o tipo da var na type libary, mais não funciona...
agradeço a atenção.
agradeço a atenção.
GOSTEI 0