[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