jci's blog

Earthquakes can't stop the rock

« Ubuntu test-controlled environment... :: Hey! Lookaddat! It's shiny and has buttons! »

Escrito el 04/08/07 02:48:24 am por jci

The date there is a little funny...

Categories: Tarros, GNU/Linux, Programacion, Blogging

jci@marvin:~/fotos$ find | grep g$ -i | wc -l
10116

Todo empezo por ahi. Como diablos se mantiene una coleccion de al menos unas 10000 fotos? O quizas mas? Y con las fechas correctas?

Siempre he tenido pesima memoria. Sobre todo para acordarme en que he eventos he estado, como asistente o expositor. Aparte de tambien algunos carretes con amigos, photoshoots y otras. Asi que como dicen por ahi, "la foto es la mejor maquina del tiempo que existe"

Bueh, creo que conocen F-spot. Asi que empece la titanica tarea de agregar toda esa cantidad de imagenes ahi. Aunque digamos que no se porta tan mal como crei (excepto por unos errores bien raros de Xlib).

Claudio Saavedra
Showing the tools of the trade

Hace ya un par de años, compre una Sony Cybershot P72. Pero olvide un pequeño detalle al momento de comprarla : colocarle la fecha correcta a la camara. Asi que estuve mas menos unos 5 meses sacando fotos con 1 año y 12 horas de diferencia. Y esos se ven en F-spot, ya que las ordena de acuerdo a algunos parametros que pueden o no estar en el archivo:

  • Fecha de creacion del archivo
  • Exif metadata : Date and Time (0x0132)

El primero siempre va a existir, pero el segundo no.

Codec?!
Damn LoopholeDamn LoopholeDamn LoopholeDamn Loophole...

Antes de la Cybershot, tenia una camara bastante humilde, marca Benq (que aun debe funcionar). No tiene tan buena resolucion como la Cybershot (debe ser de 1.3 Megapixeles), pero era lo mas portatil posible (se podia echar hasta en el bolsillo interior de una chaqueta). El unico inconveniente de la camara es que no guardaba metadatos en el archivo de imagen. Bueh, la camara con suerte tenia un display indicando la cantidad de fotos restantes, y si ibas a sacar con flash, asi que ni modo que guardara esa info.

Exif (Exchangeable Image Format) contiene una coleccion de metadatos bastante interesante. Por ejemplo, la velocidad de obturacion, exposicion, foco, etc. Si han usado Flickr alguna vez, se daran cuenta que al ver la imagen, contiene la descripcion de la imagen, junto con la camara y otros datos que son mas importantes para alguien que sabe que significan.

Un ejemplo es esta imagen (obtenida sin permiso del autor). La imagen dice que fue tomada el "2007:04:07 23:29:53".

Ahora, como diablos corrijo el famoso problema de fotos tomadas con la Cybershot, con la famosa diferencia horaria, para que f-spot pudiera ordenarlas bien?

Tuve varias opciones.

La primera fue usar exif para detectar el problema de la fecha:

jci@marvin:/tmp/f$ exif -m -i dsc00001.jpg | grep 0x0132
0x0132 2003:07:23 00:00:30

Llegue de casualidad a jhead para alterar el valor:

jci@marvin:/tmp/f$ jhead -ts2004:07:23-12:00:30 dsc00001.jpg
Modified: dsc00001.jpg

Ahora veamos como quedo..

jci@marvin:/tmp/f$ exif -m -i dsc00001.jpg | grep 0x0132
0x0132 2004:07:23 12:00:30

Olvide si un detalle antes : hay mas tags de Exif que indican la fecha y hora.

jci@marvin:/tmp/f$ exiftran -d dsc00001.jpg | grep Date
0x0132 Date and Time 2004:07:23 12:00:30
0x9003 Date and Time (original) 2004:07:23 12:00:30
0x9004 Date and Time (digitized) 2004:07:23 12:00:30

Hasta el momento se ve correcto.

La unica lata : debia parsear el valor de la imagen, ver si estaba en el 2003 y corregir la fecha. Para 10 imagenes, manualmente, no era problema. Pero me tope con casi 500 imagenes. E intentar hacer un script en Perl o en Bash habria sido una real lata.

Tomas (y juguete)
Photogenic Dog

Pero la empece.

Antes de terminar, me tope con esta interesante pieza de joyeria : Exiftool. Permite hacer transformaciones bastante buenas sobre los metadatos. La que mas me gusto? Y de acuerdo a la documentacion:

Have you ever forgotten to set the date/time on your digital camera before taking a bunch of pictures?

Bingo! No debia por que reinventar la rueda. Asi que a bajar, ni siquiera se instala, y funciona de maravilla.

Asi que mi problema se pudo resolver con este sencillo comando:

jci@marvin:~/code/Image-ExifTool-6.85$ ./exiftool "-AllDates+=1:0:0 12:00:00" directorio


Life can be peaceful again

Eso fue solo con las imagenes que tenian metadatos. Las que no, simplemente leer detenidamente el man de touch...

jci@marvin:~/fptos/2003/$ touch -d "18 Oct 2003 00:00:00" file.jpg

Claro, la lata va tambien en pillar la fecha correcta. Pero solo eran 4 imagenes que estaban datadas de 1999 (!), del Encuentro Linux 2003.

De que sirve tener todas las fotos en un solo lugar? Aparte de borrar las que realmente son innecesarias, permite encontrar joyas de la fotografia.

Como esta (no la saque yo, pero fue durante unas charlas en La Serena)

Disfraz
That hand was not supposed to be there.

1066 views » 2 feedbacks »

2 comments

Comment from: axl000 [Visitor] Email · http://elmundoestuyo.byethost15.com
ohhh quiero una polera de debian!!!!
04/08/07 @ 21:49
Comment from: diego chavez [Visitor] Email · http://ecuador
todo bien les felicito por esta pagina
04/12/07 @ 12:27

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
PoorExcellent
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)

Acerca de este glob

On the Sixth Day, there was a Running Man looking for a Predator to stop a Raw Deal with a Commando. Only True Lies were said. But nao, Junior is about to get Twins, with the help of a Kindergarden Cop. That will be the Terminator of all struggles.

Archives