[firebase-br] ClientDataSet + Blob + Jpeg
Kleber Caneva
kdcc em terra.com.br
Seg Nov 24 14:00:35 -03 2008
Eu tenho usdo assim e funciona muito bem
var Bmp: TBitMap;
JPeg: TJpegImage;
Gif: TJvGIFImage;
begin
inherited;
If not OpenPictureDialog1.Execute then
Exit;
JPeg := TJPEGImage.Create;
Gif := TJvGIFImage.Create;
Bmp := TBitMap.Create;
try
If UpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.JPG' then
begin
JPeg.LoadFromFile(OpenPictureDialog1.FileName);
Bmp.Assign(JPeg);
end
else If UpperCase(ExtractFileExt(OpenPictureDialog1.FileName)) = '.GIF'
then
begin
Gif.LoadFromFile(OpenPictureDialog1.FileName);
Bmp.Assign(Gif);
end
else
begin
Bmp.LoadFromFile(OpenPictureDialog1.FileName);
end;
if not(dtmUsuario.cdsPadrao.State in [dsInsert,dsEdit]) then
dtmUsuario.cdsPadrao.Edit;
dtmUsuario.cdsPadraoASSINATURA.Assign(Bmp);
except
Application.HandleException(nil);
end;
JPeg.Free;
Gif.Free;
Bmp.Free;
end;
[]´s
Kléber Caneva
----- Original Message -----
From: "Fabrício Fadel Kammer" <ffkammer em conchalnet.com.br>
To: "Lista Firebase" <lista em firebase.com.br>
Sent: Friday, November 21, 2008 3:15 PM
Subject: [firebase-br] ClientDataSet + Blob + Jpeg
Boa tarde à todos!
Terminando a migração para o ClientDataSet encontrei mais um problema e
não consigo achar a solução em lugar nenhum. O problema agora é eu
conseguir armazenar uma imagem JPEG em um campo Blob do clientdataset
(enquanto usava TIBDataSet funiconava perfeitamente).
Uso o código abaixo para gravar a imagem no banco:
var
MemStream: TStream;
Jpg: TJpegImage;
begin
if dlgAbrir.Execute then
begin
MemStream :=
dmTabPrincipal.cdsDadosProprio.CreateBlobStream((dmTabPrincipal.cdsDadosProprioLogotipo
as TBlobField),bmWrite);
Jpg := TJPEGImage.Create;
Jpg.LoadFromFile(dlgAbrir.FileName);
Jpg.SaveToStream(MemStream);
MemStream.Free;
Jpg.Free;
end;
end;
E para recuperar a imagem:
MemStream := dmTabPrincipal.cdsDadosProprio.CreateBlobStream( (
cdsDadosProprioLogotipo as TBlobField ) , bmRead );
Jpg := TJpegImage.Create;
try
Jpg.LoadFromStream(MemStream);
imgLogotipo.Picture.Assign( Jpg );
finally
Jpg.Free;
MemStream.Free;
end;
Logo em seguida ao gravar o Logo no banco de dados através do
ClientDataSet se eu carregar a imagem usando o método acima funciona
corretamente, porém após fechar o ClientDataset e abrí-lo novamente não
consigo mais carregar a imagem, recebo o erro: "JPEG error #50".
Alguém saberia como solucionar esse problema?
Obrigado
Fabrício
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista