Na minha última viagem de férias foi a família toda, cada um com sua respectiva câmera fotográfica, tirando fotos ao mesmo tempo, nos mesmos lugares.
Pensei em juntar as fotos de todo mundo e montar um álbum com as fotos na ordem cronológica em que foram tiradas, apagando as fotos que ficaram ruins e deixando apenas as melhores fotos de cada lugar, independentemente de quem havia tirado.
Foi aí que percebi que teria um serio problema: cada câmera estava com uma hora diferente e quando os arquivos das fotos eram ordenados por data, ficava tudo embaralhado.
Se eu sincronizasse o horário das câmeras as novas fotos ficariam na ordem correta, mas todas as fotos que já haviam sido tiradas continuariam erradas.
Para solucionar o problema mantive a hora de cada câmera e fotografei meu relógio com todas as máquinas, assim eu sabia qual era o horário correto e quantos tempo (segundos, minutos ou horas) a mais ou a menos cada câmera estava.
Um leitor comum, não nerd deve estar pensando: “E daí? Não resolveu o problema!”, mas o desfecho da história segue abaixo.
Toda câmera fotográfica digital moderna grava alguns metadados da foto (informações sobre a foto) na própria foto, utilizando um padrão chamado Exif. No Exif fica gravado o modelo da câmera, se o flash foi disparado ou não, distância de foco, tempo de exposição, megapixels, data e hora em que a foto foi tirada, entre inúmeras outras informações.
O que fiz foi utilizar 3 programas para acertar os horários das fotos no Exif e no arquivo:
- JHead versão 2.96 de 22 de Junho de 2012 (link download)
- jpegtran versão 8d de 15 de Janeiro de 2012 (link download)
- ExifTool versão 8.98 de 28 de Julho de 2012 (link download)
jhead -model SD1000 -cmd "ren &i Ananda_&i" img*.jpg
jhead -model SX210 -cmd "ren &i Ana_&i" img*.jpg
jhead -model S100 -cmd "ren &i Henrique_&i" img*.jpg
jhead -autorot -di -dx *.jpg
jhead -ft *.jpg
jhead -ta-1:56:13 -model SD1000 *.jpg
jhead -ta-1:52:58 -model SX210 *.jpg
jhead -ta+1:00:52 -model S100 *.jpg
jhead -ft *.jpg
exiftool "-AllDates<DateTimeOriginal" "-FileModifyDate<DateTimeOriginal" *.jpg
Explicação:
- Os comandos 1, 2 e 3 renomeiam as fotos de acordo com o modelo da câmera. Supondo que existam 3 arquivos IMG_0001.jpg, um tirado pela câmera S100 do Henrique, um pela câmera SX210 da Ana e a outro pela câmera SD1000 da Ananda, com esse comando os arquivos terão os nomes Henrique_IMG_0001.jpg, Ana_IMG_0001.jpg e Ananda_IMG_0001.jpg. É para evitar que existam arquivos com o mesmo nome na mesma pasta.
- O comando 4 é para rotacionar as fotos, usando o sensor de orientação das câmeras (paisagem ou retrato) e remover outros dois metadados da foto: o IPTC e o XMP. Esse são semelhantes ao Exif e utilizados por alguns programas, como Picasa e Photoshop. Por eles também conterem a data da foto, caso a data do Exif seja alterada, algum desses programas pode “des-alterar” e voltar a data que está no XMP ou no IPTC.
- Os comandos 5 e 9 são na verdade o mesmo e servem para fazer com que a data do arquivo seja a mesma que a do campo DateTimeOriginal do Exif
- Os comandos 6, 7 e 8 são para deslocar a hora que está no campo DateTimeOriginal do Exif em mais ou menos horas, minutos e segundos. No exemplo acima a foto foi tirada às 11:29:41 mas a data da câmera era 13:25:54, ou seja precisa subtrair 1h56m13s da hora do Exif/arquivo.
- O comando 10 é para fazer com que todas as datas do Exif (DateTimeOriginal, CreateDate e ModifyDate) tenham o valor do DateTimeOriginal e que a data do arquivo seja a mesma que a do campo DateTimeOriginal do Exif