[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