Ir para conteúdo
Fórum Script Brasil
  • 0

Escolher caminho de imagem capturada por DelphiTwain


Gabriel Cabral

Pergunta

Boa tarde.
Estou utilizando o componente DelphiTwain para captura de imagem através de webcam.
Quando chamo o evento para capturar a imagem, ele abre uma tela do próprio windows e faz quantas capturas você quiser.
O problema é que essas imagens capturadas não são gravadas em nenhum outro lugar, a não ser no dispositivo de imagem (webcam). Elas ficam armazenadas no dispositivo como Imagem 001, Imagem 002, e assim por diante.
Gostaria de saber se há um jeito de já gravar com um nome e em um caminho escolhido por mim.
Ou então se tem algo no Delphi que copie essas imagens do dispositivo para uma outra pasta.
Obrigado.
Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

veja no help do componente

Example using event OnTwainAcquire and Enabled property blackdot.gif

This event receives the final images when transference mode is set to ttmNative or ttmMemory (transfermode property). To run this example, create a new application (File > New Application) and add a TImage, a TButton and a TDelphiTwain component in the form.

When the user clicks over the button, it will acquire image from the first twain source avaliable. To do so, double-click over the TButton control to edit the event.

procedure TForm1.Button1Click(Sender: TObject);
begin
//Loads library and source manager. In case the
//LibraryLoaded value continues to be FALSE, it
//means that twain is not installed, so exit
DelphiTwain1.LibraryLoaded := TRUE;
DelphiTwain1.SourceManagerLoaded := TRUE;
if DelphiTwain1.LibraryLoaded = FALSE then Exit;
//If there is no sources, also exit
if DelphiTwain1.SourceCount = 0 then exit;

//Acquire from the first source
DelphiTwain1.Source[0].TransferMode := ttmMemory;
DelphiTwain1.Source[0].Loaded := TRUE;
DelphiTwain1.Source[0].Enabled := TRUE;
end;

Also edit TDelphiTwain component OnTwainAcquire event:

procedure TForm1.DelphiTwain1TwainAcquire(
Sender: TObject; const Index: Integer;
Image: TBitmap; var Cancel: Boolean);
begin
//Copies the Image parameter to the TImage
Image1.Picture.Assign(Image);
//We only want the first image
Cancel := TRUE;

end;

Now, execute the application and click over the TButton control.

Nesse exemplo, voce coloca a imagem em um componente TImage do delphi ... depois é so salvar a imagem desse componente

=================================================================================================

Pode usar esse tambem

Example using file transference blackdot.gif

In order to run this example, create a new application (File > New Application). In the new created form, add a TButton and TDelphiTwain component anywhere in the form.

Double-click on the button to edit the OnClick event:

procedure TForm1.Button1Click(Sender: TObject);
var
SourceIndex: Integer;
begin
//Try loading the library
if DelphiTwain1.LoadLibrary then
begin

//Same as SourceManangerLoaded := TRUE
DelphiTwain1.LoadSourceManager();
//Select the source
SourceIndex := DelphiTwain1.SelectSource();
if SourceIndex <> -1 then
with DelphiTwain1.Source[sourceIndex] do
begin

//Prepare for transfering using ttmFile mode
Loaded := TRUE;
TransferMode := ttmFile;
Enabled := TRUE;

end else ShowMessage('Cancelled')

end
else ShowMessage('Twain not installed')
end;

Now edit TDelphiTwain events OnSourceSetupFileXfer and OnSourceFileTransfer:

procedure TForm1.DelphiTwain1SourceSetupFileXfer (Sender: TObject; const Index: Integer);
begin
delphitwain1.source[index].SetupFileTransfer(
IncludeTrailingBackslash(getcurrentdir) +
'image.bmp',tfBMP);
end;

procedure TForm1.DelphiTwain1SourceFileTransfer(
Sender: TObject; const Index: Integer;
Filename: TW_STR255; Format: TTwainFormat;
var Cancel: Boolean);
begin
ShowMessage('File saved to ' + filename);
end;

=============================================================================================

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado, Jhonas.

Eu já utilizava o primeiro passo que você citou, e só agora percebi que não estava mandando a imagem pro TImage porque eu não tinha chamado o evento OnTwainAcquire.

Mas me ocorre outra coisa. Quando abre a tela de captura, se eu clicar em Cancelar ou sair sem obter imagens, não consigo mais abrir esta tela novamente. Sabe o que pode ser?

Link para o comentário
Compartilhar em outros sites

  • 0

usando o help do componente

voce deve usar os comandos DisableSource e EnableSource ( desabilitar ou habilitar a camera )

EnableSource permite habilitar ou ativar a fonte para transferir imagens adquiridas.

função EnableSource ( ShowUI , Modal : Boolean) : Boolean;

descrição

Este método faz o mesmo que a propriedade Enabled . Ele diferença é que em vez de ler ShowUI e Modal propriedades do objeto , ele usa os do parâmetro.

O método inicia o processo de transferência da imagem da fonte para a aplicação. Se o parâmetro ShowUI estiver definido como FALSE, nenhuma interface de usuário deve ser exibida e a imagem será transferido automaticamente.

Se o parâmetro Modal é definido como TRUE , o formulário de candidatura atual será desativado até que a janela de origem esteja fechado.

O método também define a propriedade Enabled para TRUE para dizer à aplicação que a fonte está trabalhando atualmente .

A imagem será transferida para o aplicativo usando o método selecionado na propriedade TransferMode através dos eventos do componente TDelphiTwain .

Leia mais sobre os diferentes modos de transferência aqui.

No caso do usuário cancelar os diálogos de origem , o evento OnAcquireCancel será chamado para notificar o aplicativo .

Após a interface do usuário estar fechada ( ou Cancelada ) ou a imagem ser transferida , a propriedade irá ser re-definida para FALSE e o evento OnSourceDisable será chamado.

valores de retorno

Retorna true ou false se ele foi ou não ativada com sucesso.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...