Extrair a data de uma fotografia

Publicado por Elgio Schlemer em 23/10/2007

[ Hits: 10.774 ]

Blog: http://gravatai.ulbra.tche.br/~elgio

 


Extrair a data de uma fotografia

Praticamente todas as câmeras digitais que conheço inserem como comentário DENTRO do arquivo JPEG a DATA e HORA em que ela foi tirada (eu acho HORRÍVEL e de muito mal gosto por a data na foto, impressa).

Esta informação vai como um comentário no arquivo e pode ser útil para catalogá-las. Ferramentas de gerenciamento de fotos usam esta informação.

Para extrair, por linha de comando, esta informação:

$ ARQ=teste.jpg
$ head -10 $ARQ | strings | grep 200[456789] | tail -1


O head é apenas por questões de desempenho, para ele não fazer um strings em 4 ou 5 MB de uma foto de boa qualidade.

Veja o efeito em uma foto gerada por máquina CANON:

2007:06:17 12:55:34

Outras dicas deste autor

DROP ou REJECT no iptables?

Usando rm para apagar arquivos esquisitos

Firewall SIMPLES e eficiente para DESKTOP em 5 linhas

Cálculo da potência modular de forma eficiente

Enviar aspas em PHP de maneira menos suja

Leitura recomendada

Localizando comandos no histórico

Entendendo o campo TTL do ping

Encontrar e apagar todos os seus arquivos indesejáveis

Instalação de pacotes em sistemas Sabayon sem acesso à rede

Listar somente diretórios


Comentários
[1] Comentário enviado por removido em 24/10/2007 - 07:43h

Bacana sua dica meu amigo.......

A maioria não sabe que isto existe!!!
Como eu não cheguei a testar, fica aqui a pergunta:

Funciona com fotos tiradas de um celular???

[2] Comentário enviado por hugoeustaquio em 24/10/2007 - 09:37h

Acho que vai depender do celular, se ele gravar esta informação entre as 10 primeiras linhas do arquivo..... Só lembrando, se você tiver fotos antigas (antes do ano 2004) substitua o comando grep que foi utilizado, por uma faixa de datas que abranja suas fotos. Pode usar o comando egrep '(200|199)[0-9]' teste.txt, e o comando completo ficaria assim: head arquivo.jpg | strings | egrep '(200|199)[0-9]' | tail -1. O comando 'egrep' se difere do 'grep' por usar expressões regulares, e é o mesmo que usar 'grep -E'. Ah, este comando busca as datas de 1990 até 2009. Em 2010 o comando vai ter que mudar, ficando egrep '(20[0-20]|199[0-10])'.

[3] Comentário enviado por removido em 24/10/2007 - 10:04h

ahh mto bom!!!
então, testei fotos tiradas do meu celular (Motorola E398) e consegui extrair as informações de data e hora que foi tirada a foto. Baseada na data e hora do celular claro.

Muito obrigado pela dica. Para mim foi de muita utilidade.

Abraços



Contribuir com comentário