[firebase-br] gravar JPEG numa tabela firebird

Jorge Henrique - América Móveis jorgehenrique em americamoveis.com
Seg Jul 30 13:31:46 -03 2007


Eu uso um componente chamado EDBImage. É free e opensource, inclusive 
bem mantido pelo autor, funciona (acredito eu) em todas as versões do 
Delphi. A primeira vantagem é q eu não preciso usar streams pra 
converter pra la e pra ca, pq isso é um parto. Experimenta colocar esse 
processo no afterscroll de um dataset com 50 registros, onde tem-se um 
campo blob com a foto e vc vai dando next de registro em registro. A 
aplicação fica super pesada! A cada registro q vc passa, dá-lhe trabalho 
de jpg pra bmp e assign no Timage! Sem dizer o espaço de memoria q o bmp 
vai ocupar. A segunda vantagem do EDBImage é q ele abre qualquer formato 
sem precisar de conversões: bmp, jpg, tiff, gif e por aí vai...

[]´s
Jorge Henrique

Simone escreveu:
> Fabinho, Tive esse problema também, e consegui da seguinte forma:
> Tenho um campo "FOTO....Blob.....80...Binary, e gravo nesse campo tanto BMP
> como JPEG sem problemas, deixo a critério do usuário escolher a imagem que
> deseja. Fiz assim: Na Unit do Cadastro tenho os seguintes componente:
> - TOpenDialog (OpenDialog1), onde seu Filter é "Jpg|*.jpg|Bmp|*.bmp"
> - TDBImage, onde configuro o DataField pra "FOTO" e o DataSource (DSTabela),
> da tabela correspondente
> Deixo o usuário escolher a foto a gravar sem problema e no botão "GRAVAR",
> antes do POST da tabela, uso a seguinte linha:
>     If (OpenDialog1.FileName <> '') And
> (UpperCase(Right(OpenDialog1.FileName, 03)) = 'JPG') Then
>          ConverteJpgBmp(CdsTabelaFoto,OpenDialog1.FileName); // onde
> CdsTabela é o meu TClientDataSet dessa tabela)
>
> Essa "Right" é uma função que tenho pra pegar os "n" caracteres a direita da
> string que passar por parâmetro:
> function Right(cPalavra:String; nTam: SmallInt):String;
> begin
>     result := copy(cPalavra, length(cPalavra)-nTam+1, nTam);
> end;
>
> E "ConverteJpgBmp" é outra uma procedure:
> procedure ConverteJpgBmp(CdsTabela:TBlobField;Arquivo: string);
> var
>   Bmp: TBitmap;
>   JPeg:TJPegImage;
>   cArq:String;
>   F1  :TMemoryStream;
> begin
>   cArq   := '';
>   JPeg   := TJPegImage.Create;
>   try
>     F1   := TMemoryStream.Create();
>     Bmp  := TBitmap.Create;
>     Jpeg.LoadFromFile(Arquivo);
>     try
>       Bmp.Assign(JPeg);
>       Bmp.SaveToFile(ChangeFileExt(Arquivo, '.Bmp'));
>       cArq := ChangeFileExt(Arquivo, '.Bmp');
>       F1.LoadFromFile(cArq);
>       CdsTabela.LoadFromStream(F1);
>     finally
>       DeleteFile(pChar(cArq));
>       Bmp.Free;
>       F1.Free;
>     end;
>   finally
>      JPeg.Free;
>   end;
> end;
>
> Funciona perfeitamente, claro que ele na verdade converte o Jpeg em BMP,
> mas, o cliente não precisa converter tudo pra Jpeg pra fazer isso, a
> aplicação faz por ele. Detalhe: Na Unit que você criar a procedure de
> conversão, precisa usar as seguintes "Uses": Jpeg e ClipBrd;
> Espero que ajude!
>
> ----- Original Message -----
> From: "Fabinho" <gatascheguei em yahoo.com.br>
> To: <lista em firebase.com.br>
> Sent: Monday, July 30, 2007 10:29 AM
> Subject: [firebase-br] gravar JPEG numa tabela firebird
>
>
> Moçada bom dia,
>
> O assunto diz tudo... como faço para gravar uma imagem em .jpg numa tabela
> firebird usando delphi?
>
> grato!
>
>
>       Alertas do Yahoo! Mail em seu celular. Saiba mais em
> http://br.mobile.yahoo.com/mailalertas/
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>   





Mais detalhes sobre a lista de discussão lista