Artigo do tipo Tutorial
Recursos especiais neste artigo:
Conteúdo sobre Novidades.
Capturando imagens com Java e HTML5
Este artigo demonstra como capturar imagens de uma webcam utilizando o browser e enviá-las para um servidor de imagens. Para isso, criaremos uma aplicação web em HTML5 que, através do navegador, capturará uma imagem e a enviará para um servlet efetuar sua persistência.

Em que situação o tema é útil
Este tema é útil para todos os desenvolvedores Java que têm interesse em aprender um novo recurso do HTML5 que pode ser empregado em suas aplicações web, simplificando e aprimorando ainda mais a codificação.

O uso de dispositivos para captura de imagens e o uso de outros periféricos para computadores pessoais sempre estiveram relacionados com a identificação do hardware executada pelo sistema operacional através dos drivers (ou módulos, em sistemas Unix). No universo Java, a manipulação de imagens capturadas por uma webcam ou outro dispositivo similar pode ser feita por meio da JMF (Java Media Framework – tema não coberto neste artigo). Apesar de também abstrair a comunicação com os dispositivos de captura de imagem, a JMF, através da JVM, ainda depende do driver utilizado pelo sistema operacional para fazer a comunicação com esses dispositivos. Desta forma, havia (e ainda há) grande dependência do sistema operacional e do driver do dispositivo de captura de imagens, o que os tornam essenciais para uma câmera ou outro dispositivo qualquer. O driver do dispositivo se encarrega de “conversar” em baixo nível com seu hardware e fornecer dados da forma mais padronizada possível para o sistema operacional, que por sua vez, envia estes dados para um software qualquer que executará inúmeras funcionalidades. A partir daí, o desenvolvedor pode trabalhar com os dados obtidos para construir seu software e utilizá-los da forma como desejar.

A nova especificação do HTML5 não torna obsoleto o driver do dispositivo, mas é possível abstrair a captura dos dados utilizando o navegador web. O que acontece é que a comunicação com o dispositivo agora é feita por mais um intermediário: o browser. Neste caso, ele facilita a interface entre a aplicação web (em JavaScript) e o dispositivo de captura. Com essa nova especificação, a ideia é que o browser fique encarregado de ser a ponte entre o dispositivo e a aplicação web, ou seja, ele obtém os dados do sistema operacional que tem alta dependência do driver e dispositivos utilizados, e abstrai os dados fornecendo-os de forma padronizada, para a aplicação web. O navegador intermedia a comunicação e passa a ter um conceito parecido com a ponte que o sistema operacional executa entre os drivers e as aplicações, abstraindo a comunicação de hardware da aplicação executada.

Uma das vantagens dessa abordagem é que cada vez mais será possível diversificar o hardware sem ter a preocupação de projetá-los para rodar sobre determinada arquitetura ou plataforma, como acontece hoje em dia, com computadores que são compatíveis com Windows, Unix/Linux e Mac OS. Exemplos desse tipo de dispositivo são os Chromebooks do Google, que rodam um browser integrado com o sistema operacional (Chrome OS, baseado no projeto Chromium) ou smartphones com o Firefox OS (baseado no Gecko e no navegador Firefox). No futuro, bastará que o dispositivo utilizado rode algum browser compatível com HTML5 ou alguma das suas futuras especificações e as aplicações criadas para este padrão executarão sempre da mesma forma. Na realidade, hoje em dia já é possível observar uma boa compatibilidade para este padrão entre os navegadores mais avançados, como o Chrome, Safari e Firefox. Esta independência e a adição de novos recursos favorecem ainda mais as aplicações web.

Além disso, o novo padrão HTML5 traz outros ótimos recursos que desenvolvedores Java estão habituados a encontrar nas empresas, como acesso a banco de dados relacional (por meio do Web SQL Database, baseado no SQLite), processamento assíncrono em threads independentes (através dos Web Workers, similar à implementação da interface ...

Quer ler esse conteúdo completo? Tenha acesso completo