25.4.09

Fotos y mas fotos... nunca aparecen ordenadas cronológicamente :-(

Cuando vamos de viaje hoy en día estamos acostumbramos a echarle fotos a todo, y con todos los dispositivos que tenemos a mano y que tienen cámara. Eso significa que, generalmente, llevamos una cámara de fotos (o dos), y uno o varios móviles. Cuando se acaba la batería de la cámara digital, pasamos a nuestro móvil y viceversa.

El problema se agrava cuando hacemos un viaje con varias personas, eso significa varias cámaras y varios móviles.

Y digo que el problema se agrava porque después, cuando pasamos a organizar todo el mar de fotos, nos encontramos con muy buenos programas para organizar las fotos: Picassa, F-Spot, ... y alguno más. Pero para ver las fotos "en orden cronológico" hay que usar el dichoso programita. Y claro, si lo que quiero es "enchufar mi pen drive usb a la televisión o al DVD directamente" las fotos salen desordenadas porque la televisión y/o el DVD no saben que es el Picassa, F-Spot, etc... ni tampoco son capaces de leer la fecha de adquisición de la foto.

Si los DVDs y/o Televisiones actuales (un mensaje para los fabricantes de DVDs, Televisiones y demás) simplemente ordenaran las fotos por fecha de adquisición (o lo permitieran)... nos ahorrarían muchos problemas (al menos a mí). Eso se hace simplemente leyendo los metadatos EXIF de las fotos. De esa forma tu solo te preocuparias de grabar las fotos tal cual en un CD o DVD, o de copiarlas directamente a tu pen drive, y el DVD/TV haría el resto.

Igualmente nos ahorrarían muchos problemas si los fabricantes de software tipo Picassa (Google en este caso) y demás, incluyeran una opción de "exportar a carpeta" en la que se renombraran las fotos a un nombre que permitiera que las fotos no salieran despues desordenadas.

Algo parecido a lo que hace el siguiente Script de Linux:


IFS=$'\n'

PREFIX="rs_"

for each in $(ls *.jpg); do

#Extraemos el nuevo nombre (será la fecha formateada de la siguiente forma AAAAMMDDHHMMSS.
NN=$(exif -t 0x9003 "$each" | grep Value | sed "s/Value: //" | tr -d " :")

if [ -n "$NN" -a ! -e "$PREFIX$NN.jpg" ]; then
echo "Duplicando $each ----> $PREFIX$NN.jpg";
cp "$each" "$PREFIX$NN.jpg";
else
if [ -e "$PREFIX$NN.jpg" ]; then
echo "Error :-( Archivo duplicado ($PREFIX$NN.jpg).";
echo " :-( Puede que existiera de antes o que haya dos fotos tomadas en la misma fecha y hora.";
echo " :-( El problema lo ha dado la foto llamada $each. ";
fi
if [ -z "$NN" ]; then
echo "Error :-( Información de fecha y hora de captura de la foto no existente.";
echo " :-( La foto $each no tiene fecha de captura.";
fi
exit;
fi

done


Para ejecutar el código hay que instalar primero el paquete "exif" (por lo menos en ubuntu se llama exif y solo hay que hacer "apt-get install exif" para instalarlo). Después crear un archivo de texto que contenga el script en la carpeta donde están las fotos, después ponerle permisos de ejecución al archivo, y por último obviamente ejecutar el script.

Al ejecutarlo se verá algo así:

Duplicando 120_FotosCamara 169.jpg ----> rs_20090408212231.jpg
Duplicando 121_FotosCamara 170.jpg ----> rs_20090410142704.jpg
Duplicando 122_FotosCamara 175.jpg ----> rs_20090408213007.jpg
Duplicando 123_FotosCamara 176.jpg ----> rs_20090408213656.jpg

Y es que lo que hace es crear una copia de la foto con un nuevo nombre. La copia para no perder el original obviamente. Si os fijáis, el nombre del archivo es básicamente, una cadena fija "rs_" (para luego poder hacer "mv rs_*.jpg a_otro_sitio") y la fecha de adquisición puesta en el siguiente orden: "AAAAMMDDHHmmss". De esa forma, cuando se ordenan las fotos por su nombre en orden ascendente, directamente ya están ordenadas en el orden cronológico adecuado.

Saludos y que lo disfrutéis.