Gravação de Imagem em BD
07/02/2006
0
Após várias análises cheguei à conclusão que a melhor opção é gravar no banco de dados apenas o path onde o arquivo da imagem está, principalmente em virtude da performance.
Pergunto: como eu poderia fazer isso? Minha maior dúvida está em relação à questão da rede.
Por exemplo:
No cadastro do cliente 1, no campo ´Foto´, gravo C:\MeuPrograma\Imagens\Cli01.jpg. No cadastro de cliente coloco um componente image e quando o registro é acessado, capto a imagem e mostro no image. Até aqui tudo certo. Mas quando esse registro for acessado por uma estação de rede, o arquivo não vai mais estar em C:\... e sim em \\Servidor\C:\... Mesma coisa acontece se a imagem for inserida através da estação. Aí o path gravado ficaria \\Servidor\C:\MeuPrograma\Imagens\Cli01.jpg. Aí o problema ocorreria quando o acesso ao registro fosse no servidor.
Alguém pode me ajudar?
Delphi 7 Firebird 1.5
Obrigado.
Armindo
Posts
07/02/2006
Martins
Opd = OpenPictureDialog.
Opd.Execute; ... Tabela.FieldByName(´C_Foto´).AsString := Opd.FileName; ... Image1.Picture.LoadFromFile(Tabela.FieldByName(´C_Foto´).AsString; ...
07/02/2006
Armindo
Opd.Execute; ... Tabela.FieldByName(´C_Foto´).AsString := Opd.FileName; ... Image1.Picture.LoadFromFile(Tabela.FieldByName(´C_Foto´).AsString; ...
Obrigado pela resposa, mas acho que você não entendeu minha dúvida.
Seguinte:
Para gravar o path tá beleza. Meu problema é qdo vou mostrar a imagem no Timage.
Vamos a um exemplo prático:
o Valor gravado em Tabela.FieldByName(´C_Foto´).AsString é C:\MeuPrograma\Imagens\Image01.jpg. Para mostrar a imagem, executo a seguinte rotina no evento on DataChange do DataSource:
Image1.Picture.LoadFromFile(Tabela.FieldByName(´C_Foto´).AsString;
O usuário estando no servidor, vai funcionar beleza, mas se o usuário estiver utilizando o prg numa estação, o path C:\MeuPrograma\Imagens\ não vai existir, pois essa pasta é do servidor, entendeu?
Obrigado.
07/02/2006
Martins
As imagens são gravadas apartir do servidor, das estações, não existe um local onde essas imagens sejam armazenadas por padrão?
07/02/2006
Aroldo Zanela
Acredito que você tenha escolhido a pior forma de lidar com ´fotos´, pois o armazenamento no banco é a melhor forma de se garantir a integridade.
Além disto, existem componentes especializados para o manuseio de imagens como o EDBImage que nos foi apresentado pela colega Lucania Salvatore e pode ser baixado gratuitamente do [url=http://cc.borland.com/Item.aspx?id=22742]link[/url].
Entretanto, no seu caso, acho que a forma de resolver mais rapidamente e criar um arquivo INI para apontar o local onde estão armazenadas.[/url]
07/02/2006
Armindo
Acredito que você tenha escolhido a pior forma de lidar com ´fotos´, pois o armazenamento no banco é a melhor forma de se garantir a integridade.
Além disto, existem componentes especializados para o manuseio de imagens como o EDBImage que nos foi apresentado pela colega Lucania Salvatore e pode ser baixado gratuitamente do [url=http://cc.borland.com/Item.aspx?id=22742]link[/url].
Entretanto, no seu caso, acho que a forma de resolver mais rapidamente e criar um arquivo INI para apontar o local onde estão armazenadas.[/url][/quote:c5d19b34f2]
Testei uma rotina para armazenar no BD, mas fica muito lento.
08/02/2006
Renato.pavan
Talvez isso possa resolver seu problema.
Renato.
Clique aqui para fazer login e interagir na Comunidade :)