Gravar imagem JPG - parte um milhão :P

Delphi

12/04/2005

Pessoal...
Quero resolver d vez esse problema.
Nunca consegui gravar uma imagenzinha JPG sequer numa porcaria d banco...
Eu tava usando um código q achava q tinha resolvido. Mas constatei q o código converte a imagem em bmp antes d efetivamente gravar na base de dados. Segue:
procedure TForm1.Button1Click(Sender: TObject);
  var Image: TJPEGImage;
begin
  if OpenPictureDialog1.Execute then
  begin
    Image := TJPEGImage.Create;
    Image.LoadFromFile(OpenPictureDialog1.FileName);
    Clipboard.Assign(Image);
    Table.Insert;
    DBImage1.PasteFromClipboard;
    Table.Post;
    Image.Free;
  end;
end;

Eu quero gravar a imagem JPG do jeito q ela é, e não em bitmap ou outro formato. Fiz várias pesquisas no fórum, tentei as dicas do DTDelphi, e nada... Alguém daqui já disse: use Stream. tentei, não consegui. Quem já conseguiu fazer isso, peço encarecidamente q me informe...
Beppe, Aroldo Zanela, nildo, apelo pra vcs...
Ah, ia esquecendo: uso ADO.
Abraços, e meus mais sinceros agradecimentos pela atenção.


Tnaires

Tnaires

Curtidas 0

Respostas

Cleidsonbsilva

Cleidsonbsilva

12/04/2005

Veja se te ajuda... só que aqui uso o FIREBIRD, e a paleta IBX, não tentei com o ADO.
pulei algumas partes do codigo, so coloquei o que interessa.


var
BinFile: TMemoryStream;
Tabela: TIBQuery;
JPG: TJPEGIMAGE;
begin

JPG.Assign(image1.picture.bitmap);
BinFile := tmemorystream.Create;
jpg.SaveToStream(binfile);


Tabela.SQL.Add(
´INSERT INTO IMAGENS(PACIENTE_ID, IMAGEM_DATA, IMAGEM_BLOB, IMAGEM_NOME, IMAGEM_TIPO) ´ +
´VALUES (:PAC_ID, :PAC_NOME, :BlobData, :imagem_nome, :tipo)´);

// no meu caso, o parametro :BLOBDATA é que recebe a imagem...

Tabela.ParamByName(´BLOBDATA´).LoadFromStream(Binfile, ftblob);
Tabela.ExecSQL;



Espero ter ajudado...


GOSTEI 0
Tnaires

Tnaires

12/04/2005

Obrigado cara, mas sua dica não funcionou. Tentei com TMemoryStream, e com TADOBlobStream, mas sem efeito. E outra: tenho a impressão q sua dica acaba caindo no q eu descrevi (meus testes não deram certo, por isso não posso afirmar com certeza): a imagem acaba sendo gravada no banco descompactada. Pegue seu banco vazio, insira uma imagem JPG, e veja o tamanho do banco após a inserção, pra ver se ele ficou absurdamente maior.
Abraços. Mais alguém?


GOSTEI 0
Tnaires

Tnaires

12/04/2005

OK, galera, não precisa mais. Graças às informações contidas neste tópico, [url]http://forum.clubedelphi.net/viewtopic.php?t=61374[/url], consegui fazer o q queria. Meus agradecimentos aos usuários merli e cleidsonbsilva!
Abraços.


GOSTEI 0
Lucaniasalvatore

Lucaniasalvatore

12/04/2005

Boa noite, comunidade.

Existe um componente ótimo para se trabalhar com imagens e banco de dados Access opu outro qualquer, é o EDBImage 1.6 JPG.

Pode-se trabalhar com os formatos .ico .bmp .wmf .emf .jpg .jpeg., sem uma linha de código.

Pode copiar da área de transferência .bmp .wmf .jpg .jpeg. No evento ´OnLoadCustomImage´ você pode carregar qualquer tipo de imagem desconhecida gif, tiff, png,...

Tem ainda o componente TQREDBimage, que foi criado para imprimir arquivos de imagens. Com os mesmos destaques do componente TEDBImage. Após a instalação ele ficará disponível na paleta Data Controls, e o TQREDBimage na paleta QReport (Quick Report).

O endereço: [url]http://cc.borland.com/cc/ccweb.exe/listing?id=22742[/url]

É isso,

Boa programação

Lucania Salvatore


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

12/04/2005

Boa noite, comunidade. Existe um componente ótimo para se trabalhar com imagens e banco de dados Access opu outro qualquer, é o EDBImage 1.6 JPG. Pode-se trabalhar com os formatos .ico .bmp .wmf .emf .jpg .jpeg., sem uma linha de código. Pode copiar da área de transferência .bmp .wmf .jpg .jpeg. No evento ´OnLoadCustomImage´ você pode carregar qualquer tipo de imagem desconhecida gif, tiff, png,... Tem ainda o componente TQREDBimage, que foi criado para imprimir arquivos de imagens. Com os mesmos destaques do componente TEDBImage. Após a instalação ele ficará disponível na paleta Data Controls, e o TQREDBimage na paleta QReport (Quick Report). O endereço: [url]http://cc.borland.com/cc/ccweb.exe/listing?id=22742[/url] É isso, Boa programação Lucania Salvatore

Colega,

Testado e aprovado.


GOSTEI 0
Walfrido

Walfrido

12/04/2005

baixei o arquivo do edbimage mas diz que ta falando arquivos na hora da instalação.

Tem como de vc mandar o seus arquivos pra mim.


mande para este email: walfrido@com4.com.br

Desde já agradeço,


GOSTEI 0
Tnaires

Tnaires

12/04/2005

Caro walfrido:
Vc leu o arquivo LEIAME que vem com os arquivos de instalação? Se vc resolver não baixar a unit GraphicEx (que o autor do componente sugere baixar, e serve para dar suporte a outros formatos menos comuns), é necessário comentar uma linha no código da unit do DBEImage. Tá tudo bem explicado no LEIAME, talvez seu problema de instalação se origine daí.
Abraços


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Estou utilizando o componente mas quando executo o programa, na hora que vai chamar o componente ele da um erro dizendo que a propriedade ZoomToFit não existe!

Alguem saberia o que é este erro?

Daniel


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

SOBE


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Sobe de novo


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Aroldo Zanel,vc testou com campos Blob(Jpg) e funcionou perfeitamnte?
Náo deu este erro de ZoomtoFit náo? Qual versáo que vc testou? Server para Delphi 7?


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

SOBE


GOSTEI 0
Tnaires

Tnaires

12/04/2005

Olá

Eu testei pra Access e pra SQL Server com Delphi 7, e funcionou perfeitamente. Inclusive eu altero essa propriedade ( ZoomToFit ) em tempo de execução, via código, e não dá erro.

Vc não instalou um arquivo pra uma versão diferente do Delphi não?

Veja também se vc num colocou um TDBImage comum por engano no seu programa.

Leia o arquivo leiame q vem com o componente pra tirar suas dúvidas.

Abraços


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Vc fez o download do domponente para Delphi 7 aonde?


GOSTEI 0
Sandra

Sandra

12/04/2005

Daniel,

Ao fazer o download na página indicada, verá os arquivos .dpk: DCLserXX e VCLserXX, onde XX é a indicação da versão do delphi onde vai ser instalado o componente.


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Tudo bem valeu pela dica, mas eu gostaria de saber aonde ele conseguiu o componente. Porque de repente o meu pode estar corrompido, sei lá.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

12/04/2005

Aroldo Zanel,vc testou com campos Blob(Jpg) e funcionou perfeitamnte? Náo deu este erro de ZoomtoFit náo? Qual versáo que vc testou? Server para Delphi 7?

Colega,

Testei com Delphi 6 com Firebird 1.5. Vou fazer um teste com o 2005 pra ver se tá legal (acredito que sim).


GOSTEI 0
Tnaires

Tnaires

12/04/2005

Caro Daniel, acabei de mandar pro seu hotmail o componente para Delphi 7.
Abraços


GOSTEI 0
Daniel_mc

Daniel_mc

12/04/2005

Valeu meu camarada! Mas eu já descobri qual era o problema.
Era o seguinte eu havia instalado a versão 1.5 do componete ai depois instalei a 1.6, mas as dcu´s que ficaram na pasta do Delphi foram as antigas por isto dava o erro de ZoomToFit porque o 1.5 não possue esta propriedade. Ai foi só remove-los e colocar o Definition.inc lá de novo e 100¬ :lol:


Valeu Galera!!

Tamos ai se precisarem...


GOSTEI 0
POSTAR