Fórum Abrir uma imagem localizada em uma pasta no servidor #375561
02/10/2009
0
Sem compartilhar a pasta onde estão localizadas as fotos, como seria o código para abri-la em outro cumputador na rede.
Fdamds
Curtir tópico
+ 0Posts
03/10/2009
Afarias
um servidor de banco de dados tb funcionaria, desde q o SGBD permita que vc crie uma função para dinamicamente carregar o arquivo e transmití-lo como resposta a um comando SQL de sua aplicação.
T+
Gostei + 0
03/10/2009
Fdamds
Então como seria o código para gravar a foto no banco e trazê-la para o formulário no computador cliente?
Gostei + 0
03/10/2009
Afarias
|formulário no computador cliente?
Eu não disse para gravar a imagem no banco, eu disse para construir uma função (o q pode não ser exatamente uma tarefa simples) que carrega-se o arquivo do disco e transmitisse usando o protocolo do banco.
Entretanto, gravar a imagem no banco de dados em lugar do disco tb é uma opção (q tem seu lado positivo e negativo)
Como gravar e recuperar uma imagem de um banco de dados pode depender do banco de dados e componentes de conexão q vc usa. Se tiver interesse dê mais detalhes e se eu puder passarei um exemplo.
Basicamente vc cria um campo tipo BLOB no banco de dados, e usa funções como LoadFromStream/LoadFromFile e SaveToStream/SaveToFile para carregar/salvar a imagem para o campo.
T+
Gostei + 0
04/10/2009
Fdamds
Meu aplicativo foi desenvolvido para realizar controle escolar. Dentre os diversos formulários, existe um que realiza o cadastro de alunos, inclusive salvando a foto.
Como eu disse, da maneira como programei, ele grava e recupera a foto tranquilamente, quando a aplicação é executada no computador servidor. Porém se é executado de uma estação é dada a informaçào que a foto não foi localizada, isto porque ela se encontra em diretorio na unidade C:.
Meu aplicativo está conectado a um banco Interbase. E utilizo para a conexão o componente Interbase, da paleta do próprio delphi.
Gostaria que você me enviasse um exemplo, se possível com o passo-a-passo, desde a criação do campo blob no banco interbase, até o código para gravar e abrir a foto desejada.
Mais uma vez, obrigado pela atenção!
Gostei + 0
04/10/2009
Adilsond
\\Computador\NomeDoCompartilhamento
Gostei + 0
04/10/2009
Afarias
|passo, desde a criação do campo blob no banco interbase, até o código para
|gravar e abrir a foto desejada.
criar o campo blob é simples, ex:
create table teste (
codigo integer not null,
[b:53440f086b]foto blob sub_type 0[/b:53440f086b]
);
ou
alter table teste [b:53440f086b]add foto blob sub_type 0[/b:53440f086b];
***
gravar uma imagem para o campo ou parâmetro de um insert/update tb é simples, ex:
if OpenDialog1.Execute then TBlobField(IBQuery1.FieldByName(´FOTO´)).LoadFromFile(OpenDialog1.FileName);
no caso de parâmetros, é semelhante:
if OpenDialog1.Execute then IBQuery1.ParamByName(´P_FOTO´).LoadFromFile(OpenDialog1.FileName, ftBlob);
***
Carregar a imagem do banco e mostrar para o usuário é simples mais requer uma pequena atenção. Primeiro, pra simplificar seu código é importante que vc permita apenas 1 tipo de imagem (bmp ou jpg são boas opções).
Se optar por imagens BMP então vc não tem q fazer nada. Use um DBImage associado ao seu campo foto da Query e pronto, ele vai renderizar a imagem para vc. Entretanto um DBImage suporta apenas BMP... Se vc optar por um outro tipo de imagem como JPG ou PNG (por causa da compressão) vc não poderá usar um DBImage.
Neste caso, vc deve usar um componente como TImage e renderizar a imagem manualmente. Segue um código exemplo:
procedure TForm1.ShowImage; var stm: TStream; jpg: TJPEGImage; begin stm := TMemoryStream.Create; try TBlobField(IBQuery1.FieldByName(´FOTO´)).SaveToStream(stm); stm.Position := 0; jpg := TJPEGImage.Create; try jpg.LoadFromStream(stm); Image1.Picture.Assign(jpg); finally jpg.Free; end; finally stm.Free; end; end;
Espero q isto ajude.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)