[firebase-br] ClientDataSet + Blob + Jpeg
Kleber Caneva
kdcc em terra.com.br
Ter Nov 25 16:00:29 -03 2008
Tenta recuperar assim: (ou proximo a isso)
var
JPeg: TJpegImage;
SM: TStream;
begin
SM :=
dtmNFEntrada.cdsNFEntrada.CreateBlobStream(dtmNFEntrada.cdsNFEntradaIMAGEM,bmRead);
JPeg := TJPEGImage.Create;
try
JPeg.LoadFromStream(SM);
frmVisualizarImagem.Image1.Picture.Bitmap.Assign(Jpeg);
finally
JPeg.Free;
SM.Free;
end;
[]´s
Kléber Caneva
----- Original Message -----
From: "Fabrício Fadel Kammer" <ffkammer em conchalnet.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, November 24, 2008 5:26 PM
Subject: Re: [firebase-br] ClientDataSet + Blob + Jpeg
Boa tarde Kleber, tentei direto sim, aaparentemente grava na tabela,
pois vejo que há conteúdo no campo, porém quando tento recuperar o
conteúdo recebo uma mensagem de que o conteúdo não é um JPEG válido.
Abraços
Fabrício
Kleber Caneva escreveu:
> Desculpe.. não tinha atentado a isso.. nessa rotina realmente tenho que
> gravar como bmp.
>
> Mas acredito que o mesmo funciona se vc colocar o Jpeg
> dtmUsuario.cdsPadraoASSINATURA.Assign(Jpeg);
>
>
> Em tempo, você já tentou fazer direto ?
> cdsTabelaCAMPO.LoadFromFile(OpenDialog1.FileName);
>
> []´s
>
> Kléber Caneva
>
> ----- Original Message -----
> From: "Fabrício Fadel Kammer" <ffkammer em conchalnet.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, November 24, 2008 4:06 PM
> Subject: Re: [firebase-br] ClientDataSet + Blob + Jpeg
>
>
> Boa tarde Kleber, obrigado pelo retorno, o problema é que dessa forma a
> imagem gravada no BD é um BMP e não um JPEG e o tamanho aumenta demais.
>
> Estou tentando resolver o problema de armazenamento do JPEG direto no FB
> usando ClientDataSet (com IBX direto funcionava).
>
> Mesmo assim obrigado pelo retorno
>
> Fabrício
>
> Kleber Caneva escreveu:
>
>> 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
>>
>>
>> ______________________________________________
>> 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
>>
>>
>>
>
>
> ______________________________________________
> 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
>
> E-mail verificado pelo Terra Anti-Spam.
> Para classificar esta mensagem como spam ou não spam, visite
> http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NDU0NzM0I3Blcm0hdGVycmEmMSwxMjI3NTUzNTM0Ljk2Njc1NS4yNDkyMi5ib3ByZS50ZXJyYS5jb20sNzMxMA==
> Verifique periodicamente a pasta Spam para garantir que apenas mensagens
> indesejadas sejam classificadas como Spam.
>
>
>
> ______________________________________________
> 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
>
>
______________________________________________
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