[firebase-br] Res: Re: gravar JPEG numa tabela firebird

Arlei Ferreira Farnetani Junior (Farsoft) junior em farsoft.com.br
Seg Jul 30 18:44:59 -03 2007


Baixei o componente...show de bola... 

Me responda uma coisa...como faço em tempo real para 

converter de bmp para jpeg (para ficar mais leve no banco)... 



Não sei se o componente permite a conversao automatica de

bmp para jpeg...mas é importante na minha opiniao a conversao!

 

Estou salvando ele no diretorio raiz e dando um sleep para depois 

jogar...alguem tem alguma dica? 

 

Uso o seguinte: 

 

var 

jpeg:TJPEGImage; 

begin 

Image1.Picture.Assign(Image); 

Cancel := TRUE; {Only want one image} 

 

jpeg := TJPEGImage.Create; 

with jpeg do 

begin 

Assign(Image1.Picture.BitMap); 

SaveToFile(GetCurrentDir+'\foto.jpg'); 

Sleep(2000); 

if FileExists(getcurrentdir+'\foto.jpg') then 

begin 

Fotos.insert; 

FotosID_VEICULOFOTO.Value:=dm.RetornaID('ID_VEICULOFOTO'); 

FotosIS_VEICULO.Value:=is_veiculo; 

FotosFOTO.LoadFromFile(GetCurrentDir+'\foto.jpg'); 

Fotos.Post; 

Fotos.ApplyUpdates(0); 

end; 

 

Free; 

end; 

 

end; 

 

Está correto? 

 

-------Mensagem original------- 

 

De: Jorge Henrique - América Móveis 

Data: 30/07/2007 13:29:39 

Para: FireBase 

Assunto: Re: [firebase-br] gravar JPEG numa tabela firebird 

 

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 

> 

> 

> 

 

 

______________________________________________ 

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