ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Inserir foto no TImage - R E S O L V I D O

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1039

MensagemEnviada: Ter Nov 27, 2007 1:28 pm    Assunto: Inserir foto no TImage - R E S O L V I D O Responder com Citação

Boa tarde galera! O meu problema é o seguinte:

Tenho dois forms. Um de cadastro de alunos e um com o componente VideoCap.

No form de cadastro de alunos tenho um TImage que recebe a imagem gravada na pasta 'Fotos' dentro do sistema.

Com um button nesse form eu chamo o form que contem o componente VideoCap.

Eu gostaria de saber como fazer:

1 - Nomear ('Gravar') a foto com o código ou RG do aluno, sem precisar de digitá-lo.

2 - Após registrar a foto do aluno, fazer com que ela apareça no form Alunos sem precisar de reabrir o form ou voltar um registro e depois retornar ao registro desse aluno.

No form Alunos:
Código:

procedure TfAlunos.AtivaCapturaFotoClick(Sender: TObject);
begin
dmTables.tbAlunos.Edit;
if fCapturaFoto=Nil then
Application.CreateForm(TfCapturaFoto,fCapturaFoto);
fCapturaFoto.Show;
end;


No form CapturaFoto:
Código:

procedure TfCapturaFoto.ButtonCapturaFotoClick(Sender: TObject);
begin
 if SaveFoto.Execute then
   begin
     VideoCap1.SingleImageFile:=SaveFoto.FileName;//.SaveDialog1.FileName;
     VideoCap1.SaveAsDIB;
  dmTables.tbAlunosFotoAluno.value:='C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text;//Nesse Edit é colocado a identidade do cliente. Poderia ser qualquer outro...
  //dmTables.tbAlunos.Post;
   end;
end;


Do jeito que está ele trunca o RG do aluno. Portanto quando eu abro o form com o cadastro ele informa que não encontrou o endereço da foto. Ela está sendo gravada com extenção .bmp Pelo simples motivo de não ter conseguido faze-lo gravar em JPEG.

Tentei acrescentar a extenção ao endereço: 'C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text+'.bmp'; Mas tbm não deu resultado.


Editado pela última vez por marcellomm em Sex Dez 07, 2007 3:52 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
casetek
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 13 de Setembro de 2004
Mensagens: 210
Localização: Londrina - PR

MensagemEnviada: Ter Nov 27, 2007 5:12 pm    Assunto: Responder com Citação

Olá Marcelo.

Em partes:
1 - Ao invés de gravar o caminho todo da foto, grave no bd somente o nome dela.
Errado:
{dmTables.tbAlunosFotoAluno.value:='C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text;//Nesse Edit é colocado a identidade do cliente. Poderia ser qualquer outro.}
Certo:
dmTables.tbAlunosFotoAluno.value:=dmTables.tbAlunosAluCodigo.AsString + '.jpg'+;// supondo que AluCodigo é o nome do campo Id da tabela de alunos.

Na hora de buscar a foto, vc adiciona o diretório que elas estão. Ex:
imageFoto.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'fotos\'+tbAlunosFotoAluno.AsString);

Isso vai lhe permitir mudar a pasta do programa depois e as fotos serão corretamente lidas.

2- Para salvar a foto como jpg
-declare jpeg na cláusula uses superior;

procedure TfrCapturaFoto.botSalvarFotoClick(Sender: TObject);
Var
BMP : TBitMap;
JPG : TJpegImage;
Arq: String;
begin
VideoCap1.SaveToClipboard;
BMP := TBitMap.Create;
BMP.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);

JPG := TJpegImage.Create;
JPG.Assign(BMP);
JPG.CompressionQuality:= 100;
JPG.Performance:= jpBestQuality;

Arq:= ExtractFilePath(ParamStr(0)) + 'fotos\'+tbAlufoto.AsString + '.jpg';

JPG.SaveToFile(Arq);

JPG.Free;
BMP.Free;

end;


3- Se o evento para carregar a foto estiver no OnDataChange do DataSource, automaticamente após gravar a tabela, ela já vai aparecer
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1039

MensagemEnviada: Ter Nov 27, 2007 6:34 pm    Assunto: Responder com Citação

Blz casetek, vou experimentar e posto + tarde... vlw ae
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1039

MensagemEnviada: Qui Nov 29, 2007 2:28 pm    Assunto: Inserir foto no TImage[Resolvido] Responder com Citação

Segue solução:

No TImage no OnDblClick:
Código:
procedure TfAlunos.Image1DblClick(Sender: TObject);
begin
dmTables.tbAlunos.Edit; //Data Module Tabelas e Tabela Alunos
if fCapturaFoto=Nil then //Se o form não foi...
Application.CreateForm(TfCapturaFoto,fCapturaFoto); //Cria-o
fCapturaFoto.Show;
end;


No form Captura Imagem:
Código:
procedure TfCapturaFoto.btAtivarCameraClick(Sender: TObject);
begin
  VideoCap1.VideoPreview:=true; //Seta o Preview do componente VideoCap como verdadeiro
  VideoCap1.CapAudio:=true; //Seta o Audio do componente VideoCap com verdadeiro
end;


No form Captura Imagem no button Gravar:
Código:
procedure TfCapturaFoto.btGravarFotoClick(Sender: TObject);
begin
     VideoCap1.SingleImageFile:=(ExtractFilePath(ParamStr(0))+'\Fotos\')+dmTables.tbAlunosCIAluno.Value+'.bmp'; //Informa o nome e onde salvar a foto: No caso, será salva na pasta 'Fotos' que se encontra dentro da aplicação e nomeada com o RG do aluno + extenção bmp
     VideoCap1.SaveAsDIB; //Salva a imagem
  dmTables.tbAlunosFotoAluno.value:=dmTables.tbAlunosCIAluno.asString+'.bmp'; //Coloca o nome da foto na Tabela Alunos no campo FotoAluno que é String
    Self.Close; //Fecha o formulário Captura Foto
     end;


No Form Cadastro Aluno:
Código:
procedure TfAlunos.FormShow(Sender: TObject);
begin
CarregaFoto(Sender); //Chama o procedimento carrega foto
end;


Procedimento carrega foto:
Código:
Procedure TfAlunos.CarregaFoto(Sender:TObject);
begin
//Apaga a imagem do Image1
Image1.Picture.Assign(nil);
//Se o campo FotoAluno não está vazio carrega a imagem no image1
If Not dmTables.tbAlunos.FieldByName('FotoAluno').IsNull then
begin
fAlunos.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Fotos\'+dmTables.tbAlunosFotoAluno.AsString);
end
else
//Caso contrário carrega a Logo da empresa
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Icones\’+dmTables.tbCFCLogo+’.bmp');
end;


No button Excluir registro:
Código:

procedure TfAlunos.btExcluirClick(Sender: TObject);
begin
if Application.MessageBox('Deseja mesmo excluir esse registro?'#13#10'Após a exclusão o mesmo não poderá ser recuperado!','.:: Exclusão de registro ::.',36)=6 then
Deletefile(ExtractFilePath(ParamStr(0))+'\Fotos\'+dmTables.tbAlunosCIAluno.value+'.bmp'); // Deleta a foto do registro selecionado
dmTables.tbAlunos.Delete; //Deleta o registro selecionado
CarregaFoto(Sender);
TabelaNaoLocada(Sender);
end;


No mais agradeço aos colegas do forum em especial fabiano e casetek. VALEEEUU!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1039

MensagemEnviada: Sex Dez 07, 2007 3:55 pm    Assunto: Responder com Citação

UP
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB