WebCam Control

 

WebCam Control foi desenvolvido em Flash(2.0) e em HTML5(3.0), e pode ser executado de qualquer navegador, com suporte as tecnologias, tira foto e envia imagem para seu servidor (fazendo upload do arquivo) podendo recortar a imagem, ótimo para cadastro de pessoa ou de produtos entre outras coisas. Já vem com um exemplo de código(xpz) de como pode ser utilizado.

Na Versão 3.0 desenvolvido em HTML 5  com suporte a C#  e JAVA.

 

Versão 3.0

Versão 3.0

Principais característica:

1. Tira foto;
2. Envia foto para o servidor;
3. Executa áudio ao tirar a foto(Somente na versão 2.0 e inferior);
4. Recortar foto;

 

Obs.: Identifica a web cam conectada no seu computador. Na versão 2.0 O arquivo shutter.mp3 que esta dentra da pasta o user control deve ser adicionado também na raiz da pasta web/shutter.mp3. A propriedade DirUploadTemp do UC deve ser configurada com uma pasta no servidor com permissão de leitura e escrita. Versão testada somente em ambiente C#. Na versão 3.0 os navegadores estão exigindo https para ambientes diferentes de localhost, para poder habilitar a webcam como medida de segurança.

 

Implementando

 


VERSÃO 3.0 - HTML 5 Suporte a JAVA e C#, tema não responsivo. Genexus Ev2 e Ev3 e 15. Simples implementação o UC 
retorna a imagem(png) na base64. 


UC_WebCamControl_v3
Event Start
  //Obersavacao: Genexus Ev2 que não vem com referencia Jquery favor adicionar.
  Form.JScriptSrc.Add('Shared/jquery/jquery.js')
  //Genexus Ev1 não suporta.
EndEvent


Event Enter
    //ESTE EVENTO TEM QUE SER DISPARADO DEPOIS DE CAPTURAR A IMAGEM DA WEBCAM
    //&AtributoFileBase64 - LongVarChar - adicione a propriedade
    //&AtributoImgBase64 - LongVarChar - adicione a propriedade
    &Blob.FromBase64String(&AtributoFileBase64)
    &FILE.Source = &Blob
    
    //Salva arquivo na Pasta
    &CaminhoCompletoSave = 'C:\Des\apache-tomcat-7.0.72\webapps\testeuc\temp' + '\imagem01.png'
    &FILE.Copy(&CaminhoCompletoSave)
    Msg('Imagem salva na pasta com sucesso!')
    
    //PEGA O ARQUIVO BLOB E GRAVA NO BANCO        
    //---------IMPLEMENTAR---------  
EndEvent 



VERSÃO 2.0 Suporte a Somente a C# e em Flash Ev1, Ev2 e Ev3 e 15, não responsivo.


Event Start

	WebCamControl1.NomeImgGerada = 'NomeImagem_' + &WEBSESSION.Id.Trim()
EndEvent


Event Enter

	/*ESTE EVENTO TEM QUE SER DISPARADO DEPOIS DE CAPTURAR A IMAGEM DA WEBCAM*/

	IF WebCamControl1.DirUploadTemp = '' Or WebCamControl1.DirUploadTemp = 'WebCamControl'
	  &DIRECTORY.Source = 'WebCamControl'
	  &BASE_CAMINHO = &DIRECTORY.GetAbsoluteName() + '\uploads\'
	ELSE
	  &DIRECTORY.Source = WebCamControl1.DirUploadTemp
	  &BASE_CAMINHO = &DIRECTORY.GetAbsoluteName()
	ENDIF	

	IF &DIRECTORY.Exists()
	  &BASE_CAMINHO = &BASE_CAMINHO + WebCamControl1.NomeImgGerada + '.jpg'
	  &FILE.Source = &BASE_CAMINHO

	  IF &FILE.Exists()
	   //PEGA O ARQUIVO E GRAVA NO BANCO 
	   //---------IMPLEMENTAR---------	  

	   MSG(&BASE_CAMINHO)
	   //DEPOIS DO ARQUIVO SALVO DELETE O ARQUIVO TEMPORARIO

	   //&FILE.Delete()
	  ELSE
	   &MSG = "Erro: Arquivo não exite -> " + &BASE_URL_IMAGEM.Trim()
	   MSG(&MSG)
	  ENDIF
	ELSE
	  &MSG = "Erro: Caminho inválido -> " + &BASE_URL_IMAGEM.Trim()
	  MSG(&MSG)
	ENDIF
	EndEvent
 

Scanner Control

Scanner Control foi desenvolvido em Applet e em JWS, e pode ser executado de qualquer navegador, com suporte a tecnologia Applet ou JWS, já vem com um exemplo (Xpz) funcional de como scannear um ou vários documentos em um único arquivo PDF, podendo salvar na maquina do usuário ou enviar para o servidor, como preferir, e armazenar no banco de dados, utiliza a DLL (jtwain.dll) que reconhecer o Scanner (ou Web Cam) na maquina do usuário, antes de enviar para o servidor tem como visualizar no próprio navegador, bem configurável (Mensagens, Texto dos botões, pastas temporários e etc.) para se ajustar ao seu sistema deixando-o mais moderno.

Scanner Control

Scanner Control

Principais características:

1. Rotina de escaneamento gera arquivos PDF;
2. Escaneamento vai gerar arquivos PDF single-page ou multi-page;
3. Pode escolher o nome dos arquivos e a pasta onde eles devem ser salvos(No cliente e no Servidor);
4. A rotina pode ser executada em uma estação qualquer e o arquivo pdf será enviado para o servidor;
5. Possibilita visualizar o arquivos PDF no navegador;
6. Textos, Botões, Mensagens e pastas parametrizáveis;
7. Vem com um exemplo funcionando em C#.
8. Fonte de dados do escaneamento configuráveis em tempo de execução.

 

Observações:

1. Precisa do Java 32-bit instalado na máquina do cliente;
2. Foi testado no Windows XP, Windows 7 e Windows 10 32-bits e 64-bits.
3. Precisa de um SoftWare de Scanner(ou Web Cam também reconhece) instalado no Cliente e a DLL (jtwain.dll)(Vem com o UC) colocada no Windows/system32, caso o sistema seja 64-bits colocar também na pasta Windows\SysWOW64.
4. Caso o UC esteja sendo executado de um servidor não local, configure o painel de control do java na aba segurança deve ser definida para média no cliente, para o UC acessar os drives da maquina do cliente;
New 5. Configure o servidor da Web para usar o tipo MIME do Java Web Start, Cada servidor da Web possui uma maneira específica de adicionar tipos MIME. Por exemplo, para o servidor da Web Apache, você deve incluir a seguinte linha no arquivo de configuração .mime.types: application/x-java-jnlp-file JNLP.
New 6. No IE o User Control abre embutido no navegador, no fire fox abre um pop-up,  e no chrome baixa o arquivo jnpl ao clicar no arquivo abre o pop-up com a funcionalidade (não abre automático no chrome, por limitação do navegador).
New 7. deve se colocar permissão de leitura e escrita na pasta do User Control no servidor de aplicação.

 [ IMPORTANTE ]  8. No Windows 10 não está funcionando corretamente a DLL de comunicação TWAIN.DLL , estamos verificando mas não temos solução imediata

Implementando

Se for executar em um sistema C# a configuração é a padrão do UC:

Na implementação Somente Editar o Procedimento PSetScannerControl para poder salvar no banco, para salvar no servidor e no cliente a configuração é no próprio UC.

 

IF &MENSAGEM.IsEmpty()
	&MENSAGEM = &MsgEnvioOk // "ARQUIVO ENVIADO COM SUCESSO!"
	//Salvando Arquivo no Servidor o Caminho foi configurado no UC.
	&HTTPREQUEST.ToFile(&CAMINHO_ARQ)
	/*
	//IMPLEMENTAR AQUI PARA SALVAR O ARQUIVO NO BANCO DE DADOS - EXEMPLO

	//FAVOR DESCOMENTAR E COLOCAR OS ATRIBUTOS DE ONDE SERÁ AMARZENADO O ARQUIVO PDF NO BANCO
	    FOR EACH
	        WHERE ScannerId = &ID
	           ScannerDigital = &CAMINHO_ARQ //ATUALIZANDO DOCUMENTO PDF
	    WHEN NONE //INCLUINDO UM NOVO DOCUMENTO PDF
	  NEW
	   ScannerId      = &ID
	   ScannerDigital = &CAMINHO_ARQ
	  WHEN DUPLICATE
	   ScannerDigital = &CAMINHO_ARQ
	  ENDNEW
	    ENDFOR
	//FIM DA IMPLEMENTAÇÃO*/
	ENDIF
	&HTTPRESPONSE.AddString(&MENSAGEM)

Sobre a DLL de comunicação TWAIN.DLL

Atualmente qualquer editor gráfico é capaz de receber dados do scanner insta­lado, graças ao padrão TWAIN. O Windows possui um driver chamado TWAIN source manager, encarregado de fazer a conexão entre programas gráficos e os drivers dos scanners. Todos os programas gráficos modernos são TWAIN compatíveis, assim como ocorre com os scanners. Este padrão faz com que o reconhecimento do scanner pelos programas gráficos seja tão padronizado como é o uso do mouse.

OBS: TWAIN não é abreviatura ou sigla de termo algum. Muitos brincam dizendo que significa “Technology without an interesting name”.

 

Figura 4

Funcionamento do sistema TWAIN.

A figura 4 mostra o funcionamento do sistema TWAIN. O centro de tudo é o TWAIN source manager, indicado como TWAIN.DLL (no Windows 9x/ME existem dois gerenciadores, o TWAIN.DLL e o TWAIN_32.DLL). Progra­mas Twain compatíveis en­viam comandos ao gerenciador TWAIN de uma forma padronizada, pedindo-lhes que seja enviado o arquivo gráfico capturado pelo scanner. A maioria dos editores gráficos modernos possui um co­mando Scan (ou Acquire, ou ainda Capture), obedecendo ao sistema TWAIN. O gerenciador TWAIN, por sua vez, envia comandos padronizados ao driver do dispositivo de entrada apropriado. Não é comum, mas um compu­tador pode ter diversos dispositivos de entrada TWAIN (TWAIN sources), como por exemplo, um scanner e uma câmera digital – como é exemplificado na figura 4. Cada dispositivo de entrada de imagem deve ter o seu próprio TWAIN driver, que é fornecido pelo seu fabricante. O UC Scanner control utiliza deste recurso da DLL para comunicar-se com os dispositivos de Scanner ou webcam instalados no computador do cliente


			

JcropImage Control

O JcropImage Control é um User Control que permite cortar imagem no próprio navegador do cliente e enviar para o servidor, parecido com o que é usado no Facebook, utiliza da biblioteca Jquey(JCrop) para cortar a imagem selecionada. O UC vem com um exemplo de como utilizá-lo, uma maneira simples e dinâmica de recortar fotos no browser.

 

Obs.: A propriedade DirUploadTemp do UC deve ser configurada com uma pasta no servidor com permissão de leitura e escrita. Versão testada somente em ambiente C#, para JAVA terá que ser feitas algumas modificações, prevista para próxima versão.

Implementando

Event Start
	/*A IMAGEM DEVE ESTAR NO SERVIDOR*/
	JcropImageControl1.ImageUrl = Imagem_JcropImageControl.Link() // OU ASSIM: JcropImageControl1.ImageUrl = "Resources/Imagem_JcropImageControl.jpg"
	JcropImageControl1.aspectRatio = '1' // 0 - Corte Livre 1 - Corte Retangular ou Quadrado
	&Imagem.Visible = false
	TblCortarImage.Visible = True
	BtnRefresh.Visible     = False
EndEvent 
 
 
Event Enter
	/*ESTE EVENTO TEM QUE SER DISPARADO DEPOIS DE RECORTAR A IMAGEM*/
	&FILE.Source = &ImagePath
	IF &FILE.Exists()
		//PEGA O ARQUIVO E GRAVA NO BANCO		
		//---------IMPLEMENTAR---------   
		
		//----------
		//MOSTRANDO A IMAGEM CORTADA
		&Imagem.Visible = True
		/*Forçar o Navegador não pegar do Cache*/
		&ImagePath = &ImagePath + '?' + Trim(Str(Random()*1000000)) //Resources/Imagem_JcropImageControl.jpg?121215414
		&Imagem.FromURL(&ImagePath)
		TblCortarImage.Visible = false
		BtnRefresh.Visible     = True
		Msg(&ImagePath)
		//DEPOIS DO ARQUIVO SALVO DELETE O ARQUIVO TEMPORARIO
		//&FILE.Delete()
	ELSE
		&MSG = "Erro: Arquivo não exite -> " + &ImagePath.Trim()
		MSG(&MSG)
	ENDIF 
EndEvent

GxImgResize

GxImgResize

GxImgResize

 

Objeto Externo GxImgResize para Manipular Imagens. Vem com manual e Xpz para facilitar o seu uso.

Notas da versão
1. aumenta a imagem proporcionalmente;
2. diminui a imagem proporcionalmente sem perder a qualidade;

 

Como Instalar:

 

Extrair a DLL em anexo e coloca na pasta web/Bin/

Passo 01 – Extrair a DLL em anexo e coloca na pasta web/Bin/

 

Passo 02 - Indicando Diretorio

Passo 02 – Indicando Diretório

Passo 03 - NEXT

Passo 03 – NEXT

 

Passo 04 - Importando DLL

Passo 04 – Importando DLL

Pronto, você já pode utilizar !

Como utilizar:

Possui os seguintes Métodos:

SalvarResize(string pDiretorioImagemOrigem, string pDiretorioImagemDestino, int pWidth, int pHeight)
-> Redimensionam a imagem em px e reduz o tamanho em kb, ao passar valores nos campos pWidth e pHeight a imagem sera redimensionada de acordo com os valores passados, caso o valor passado seja 0(zero) ira manter as proporções do arquivo original em pixel e reduzira o tamanho em Kb.

Ex.: imagem original Dimensao:1280 X 1024
Tamanho: 1,04MB
&GxImgResize.SalvarResize(“C:\\dois.jpg”, “C:\\dois_gerada.jpg”,350, 350)

o Ex.:

Compactar(string pDiretorioImagemOrigem, string pDiretorioImagemDestino)

-> reduz o tamanho em kb, somente irá manter as proporções do arquivo original em pixel e reduzirá o tamanho em Kb.

Ex.: imagem original Dimensão:1280 X 1024 Tamanho: 1,04MB
&GxImgResize.Compactar(“C:\\dois.jpg”, “C:\\dois_gerada.jpg”)

SalvarResizeMax(string pDiretorioImagemOrigem, string pDiretorioImagemDestino,int pWidth, int pHeight)

redimensionam a imagem em px e reduz o tamanho em kb, somente irá maximizar a imagem, caso for maior que os valores passado então o método irá manter as proporções do arquivo original em pixel e reduzirá o tamanho em Kb.

Ex.: imagem original Dimensão:1280 X 1024
Tamanho: 1,04MB

&GxImgResize.SalvarResizeMax(“C:\\dois.jpg”,”C:\\dois_gerada.jpg”, 3500, 3500)

SalvarResizeMin(string pDiretorioImagemOrigem, string pDiretorioImagemDestino,int pWidth, int pHeight)

Redimensionam a imagem em px e reduz o tamanho em kb, somente irá maximizar a imagem, caso for maior que os valores passado então o método irá manter as proporções do arquivo original em pixel e reduzirá o tamanho em Kb.

Ex.: imagem original Dimensão:1280 X 1024
Tamanho: 1,04MB

 

&GxImgResize.SalvarResizeMin(“C:\\dois.jpg”,”C:\\dois_gerada.jpg”, 350, 350);

CharCountControl

 

 CharCountControl é um User Control que Conta e limita caracteres em campos input e textarea com barra de progresso, a limitação e a barra são configuráveis assim como varias outras propriedades. Já vem com um exemplo (Xpz).

 

CharCount Control

CharCount Control

Principais características:

1. Conta Caracteres;
2. Limita a quantidade máxima de caracteres (configurável);
3. Possui barra de progresso para acompanha a quantidade de caracteres digitada em relação ao total máximo (configurável).

 

Implementando

Muito simples e prático de ser utilizado, simplesmente passar o InternalName da variável do genexus que deseja contar ou limitar a quantidade de caracteres, veja:

Event Start
	CharCountControl1.AtrVarInternalName = &CampoTexteare.InternalName
	CharCountControl2.AtrVarInternalName = &CampoInput.InternalName
EndEvent


Biometria Control

Biometria Control         

Biometria Control foi desenvolvido em Applet, e pode ser executado de qualquer navegador com suporte a tecnologia Applet, já vem com um exemplo(Xpz) funcional de registrar e verificar a biometria de uma determinada pessoa, dá suporte para os softwares biométricos.

 

 

Compatibilidades Fabricantes:

  1. NitGen Hamster DX
  2. Hamster III (FingerTech).

Principais características

  1. Registrar Biometria;
  2. Verificar Biometria;
  3. Pode cadastrar os 10 dedos, para poderem ser verificados(validados) posteriormente;

Versão do GeneXus Suportados:

  • GeneXus Evollution 1 – OK
  • GeneXus Evollution 2 – OK
  • GeneXus Evollution 3 – OK.

Observações:

  1. Precisa do Java 32-bit instalado na máquina do cliente, testado e homologado até a versão Java JRE 7.25;
  2. Foi testado no Windows XP, Windows 7 32-bits e 64-bits.
  3. Somente Navegadores 32-bits que dão suporte a tecnologia Apple. Ex.:  IE,  Firefox e outros.
  4. Depende do Software da Biometria estar instalado na máquina do cliente e as Dlls(Vem com o UC) colocadas no Windows/system32.
  5. Caso o UC esteja sendo executado de um servidor não local, configure o painel de control do java na aba segurança deve ser definida para média no cliente, para o UC acessar os drives da maquina do cliente;

 

Implementando

Versão 2.0 – Suporte a C# e Java:

Para C#: É a configuração padrão que vem no UC, não precisando informar o jar e nem o caminho completo, semelhante a versão 1.0.
Para Java: Deve ser configurado como a figura abaixo, e informar o caminho completo.
Configuração padrão para Java:

 

Versão 1.0 – Suporte a C#: 

	/*
	UserControl BiometriaControl Criado por: Welton J. N. Data:19/09/2013
	Obs:Favor editar os seguintes procedimentos: PSetBioControl,PGetBioControl para poder gravar no banco de dados da sua aplicação;
	*/

	Event Start
	/*Define o Usuário que será Utilizado, pode utilizar do banco de dados ou passando por parâmetro fixo*/
	&BioId = 1
	/* Opcional -> Define as Urls para ser direcionada a pagina, Caso a Biometria seja verdadeira ou falsa*/
	// BiometriaControl1.BioLinkFalhou   = TesteBiometriaFalhou.Link()
	// BiometriaControl1.BioLinkSucesso  = TesteBiometriaSucesso.Link()
	EndEvent	

	Event 'BtnRegistrar'
	BiometriaControl1.BioTipo = "0"
	EndEvent	

	Event 'BtnVerificar'
	BiometriaControl1.BioTipo = "1"
	EndEvent