martes, 20 de abril de 2010

Rotación de fotos sin pérdidas en Gnome (Nautilus)

Cada vez son más los modelos de cámaras digitales que incorporan un sensor de posición, capaz de determinar la orientación de la cámara (horizontal o vertical) en el momento de realizar una fotografía.

Conocida la orientación, es fácil registrar en el correspondiente campo EXIF de la foto los datos de la misma, para que así el software de visualización la pueda mostrar con la orientación correcta sin necesidad de ninguna intervención manual.



Dado que hay infinidad de cámaras digitales que no cuentan con este tipo de mecanismos, y que la tarea de rotar fotos se vuelve un poco pesada cuando manejamos series grandes, se ha tratado de preparar una herramienta para facilitar o al menos hacer un poco más llevadera la tarea de orientar correctamente nuestras fotos.

Parece bastante razonable asumir que nadie quiere que sus fotos se degraden, de modo que vamos a efectuar esta reorientación con herramientas que realizan las modificaciones necesarias sin necesidad de aplicar de nuevo algoritmo de encodado (nos referimos a imágenes en formato Jpeg, el cual implica una compresión con pérdidas). En Linux contamos con dos utilidades que pueden realizar este tipo de tareas sin afectar a la calidad de nuestras fotografías: jpegtran y exiftran.

Para quienes utilizamos Ubuntu, la primera de estas utilidades parece la más indicada, ya que aunque ambas están incluida en los repositorios oficiales, sólo jpegtran cuenta con soporte de Canonical. Sin embargo, exiftran parece más recomendable, ya que a juzgar por la descripción, realiza las modificaciones de una forma más consistente, dejando la información contenida en los campos EXIF acorde con la nueva orientación que hemos dado a la fotografía.

Lo que se plantea en este artículo es lo siguiente: Preparar unos scripts para realizar la rotación de las imágenes e integrarlos en Nautilus para que su uso sea cómodo y sencillo para usuarios de cualquier nivel.

En primer lugar, instalaremos el paquete exiftran, bien desde Synaptic o desde la línea de comandos:

$ sudo apt-get install exiftran

A continuación preparamos los scripts que se ocuparán de realizar la rotación. Para integrarlos en Nautilus, deberán de estar en la ubicación adecuada: ~/.gnome2/nautilus-scripts

Dado que podemos tener otros scripts, puede resultar conveniente agruparlos en un nuevo directorio:

$ mkdir ~/.gnome2/nautilus-scripts/jpeg-ls

A continuación creamos es script con nuestro editor favorito, p.ej:

$ vi ~/.gnome2/nautilus-scripts/jpeg-ls/lrotate


#!/bin/bash

for URI in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS;
do
MIME_TYPE=`file --mime-type -bp $URI`;
if [ $MIME_TYPE == "image/jpeg" ]
then
exiftran -2i $URI
fi
done


Este primer script realiza la rotación a la izquierda (lrotate: Left Rotate), y del mismo modo creamos el script rrotate, en el cual simplemente cambiamos un parámetro de la llamada al comando exiftran:


exiftran -9i $URI


El script únicamente se ejecuta sobre los ficheros seleccionados cuyo mime-type sea image/jpeg Una vez creados los scripts, basta con darles permisos de ejecución

$ chmod +x ~/.gnome2/nautilus-scripts/jpeg-ls/?rotate

Y ya tenemos un menú en Nautilus para rotar nuestras fotos de manera muy simple. Para acceder al menú, se seleccionan las fotos a rotar y con el botón secundario del ratón, en la categoría scripts, se indica el script a aplicar. Con hacer esto la fotografía estará ya rotada, aunque Nautilus no siempre es consciente de los cambios y en ocasiones es necesario forzar un refresco para que se muestren las nuevas miniaturas, ya correctamente orientadas.

No hay comentarios: