[firebase-br] ClientDataSet + Blob + Jpeg

Fabrício Fadel Kammer ffkammer em conchalnet.com.br
Seg Nov 24 17:06:33 -03 2008


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





Mais detalhes sobre a lista de discussão lista