Gravar imagem JPG - parte um milhão :P
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:
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.
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
Curtidas 0
Respostas
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...
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
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?
Abraços. Mais alguém?
GOSTEI 0
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.
Abraços.
GOSTEI 0
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
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
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
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,
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
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
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
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
Alguem saberia o que é este erro?
Daniel
GOSTEI 0
Daniel_mc
12/04/2005
SOBE
GOSTEI 0
Daniel_mc
12/04/2005
Sobe de novo
GOSTEI 0
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?
Náo deu este erro de ZoomtoFit náo? Qual versáo que vc testou? Server para Delphi 7?
GOSTEI 0
Daniel_mc
12/04/2005
SOBE
GOSTEI 0
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
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
12/04/2005
Vc fez o download do domponente para Delphi 7 aonde?
GOSTEI 0
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.
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
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
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
12/04/2005
Caro Daniel, acabei de mandar pro seu hotmail o componente para Delphi 7.
Abraços
Abraços
GOSTEI 0
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...
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