Extrair a data de uma fotografia

Publicado por Elgio Schlemer em 23/10/2007

[ Hits: 14.384 ]

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

Em C, escrever em arquivo fácil

Windows antes no Grub do Ubuntu 10.04

Cálculo da potência modular de forma eficiente

Enviar aspas em PHP de maneira menos suja

Firewall SIMPLES e eficiente para DESKTOP em 5 linhas

Leitura recomendada

Como limpar/truncar/zerar diversos arquivos de texto de uma só vez

Crie o comando

Verificar e despachar e-mails encalhados no Sendmail

Utilizando o SUDO para desligar ou reiniciar um PC logado com um usuário comum

Interrompendo processos no apt com segurança

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts