13 abril 2012

Câmera de Segurança OnLine - Parte II - Obtendo as imagens via FTP e Legendando


O objetivo foi criar um programa que:

- Permita ler e gravar um pequeno arquivo de configuração com as informações de conexão e configuração do programa.
- Conecte automaticamente no servidor FTP e obtenha as informações das imagens.
- Escolha todas as imagens mais antigas que "tantas" horas (ou dias ou qualquer tempo) e efetue o download das mesmas, apagando-as do servidor em seguida.
- Obtenha, a partir das informações da imagem, a data e hora do registro.
- Escreva na imagem a data e hora, para que essa informação esteja disponível diretamente ao visualizar a foto.
- Organize os diretórios das fotos de acordo com as datas.

Para conseguir o resultado desejado num curto prazo e com baixo custo (especialmente das ferramentas de desenvolvimento) utilizei o Java.

O Java é uma poderosa ferramenta para resolvermos problemas do dia a dia e criarmos programas muito poderosos em diversas plataformas. Uma das grandes vantagens é seu código aberto, sua imensa compatibilidade e interfaces de desenvolvimento (IDEs) gratuitas.

Uma biblioteca indispensável pra quem quer utilizar rede é a Apache Commons Net, uma biblioteca que permite facilmente conectar e manipular/gerenciar conexões FTP, HTTP, NNTP, POP, SMTP, IMAP, Telnet, Whois, rexec/rcmd/rlogin, Echo, etc, etc, e já dá pra ver que tem muita coisa pronta nela!

Essa biblioteca foi a base para efetuar o download dos arquivos da câmera do servidor FTP.
Uma tela com rolagem automática exibe as mensagens como um cliente FTP comum.

Após se conectar e autenticar no servidor, o programa obtém uma lista dos arquivos.
Para cada arquivo, é feita uma tentativa de decompor seu nome para obter todas as informações.
Foi criada uma nova classe que contém um único objeto, um ArquivoComData. Este objeto contém dentro de si uma data do calendário (GregorianCalendar()) e um arquivo ftp (FTPFile), que por sua vez contém o nome, localização, e todas as informações do arquivo e da sua posição na rede.

Se a pasta local não existir para a data especificada (por exemplo C:\Users\Eu\Documents\Cameras\2012-04-13) uma nova pasta é criada. Lembre-se, são milhares de imagens por dia, se todas forem se acumulando na mesma pasta em um momento se torna desastroso manipular as mesmas.

As imagens são baixadas para a pasta especificada, e seu nome é reduzido à hora da foto.

Uma Thread (LegendaArquivo, que recebe um nome de arquivo na entrada) é lançada e se compromete a gravar uma legenda contendo a data e a hora da foto, para evitar a perda dessas informações. Além, é claro, de uma marca d'água contendo uma String qualquer para fazer uma firulinha! Na verdade, ela obtém a imagem, carrega em um canvas para visualização, cria a legenda e grava novamente a imagem inteira no disco. Talvez mais lento que outras tecnologias, mas muito divertido e bastante eficiente!


Espero que alguém leia isso tudo,
e se não for esperar demais quem sabe alguém até use um pedaço!

Licença Creative Commons
O trabalho AztechFTP e JavaLegend de http://naveterra.blogspot.com.br/2012/04/camera-de-seguranca-online-parte-ii.html foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada.
Com base no trabalho disponível em www.aztechtecnologia.com.br.
Podem estar disponíveis autorizações adicionais ao âmbito desta licença em http://naveterra.blogspot.com.br.

Para obter o programa AztechFTP e seu código fonte:
AztechFTP download

Para obter o programa experimental que serviu de base para legendar as imagens:
Aztech JavaLegend download

Nenhum comentário: