[firebase-br] ClientDataSet + Blob + Jpeg

Fabrício Fadel Kammer ffkammer em conchalnet.com.br
Qui Nov 27 17:50:07 -03 2008


Bom dia Kleber,

Obrigado pelo retorno, mas realmente não consigo gravar e recuperar uma 
imagem jpeg através do ClientDataSet.

Será que mais alguém pode auxiliar-me? Preciso gravar e recuperar 
arquivos JPEG dentro de campos Blob usando 
ClientDataSet+DataSetProvider+IBQuery.

Grato

Fabrício

Kleber Caneva escreveu:
> 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
>
>
> ______________________________________________
> 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