[firebase-br] ClientDataSet + Blob + Jpeg

Fabrício Fadel Kammer ffkammer em conchalnet.com.br
Seg Nov 24 18:26:38 -03 2008


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
>
>   





Mais detalhes sobre a lista de discussão lista