Miniaturas de imágenes en bruto (RAW) en Nautilus

Introducción

En el artículo «Las mejoras de Shotwell 0.14«, escribía sobre los diferentes cambios introducidos en la última versión y hacía referencia a la mejora en la gestión y soporte de imágenes RAW. Al escribir sobre ello, recordé un artículo anterior sobre «Imágenes RAW en Ubuntu muy sencillito«, en el que explicaba como poder ver miniaturas (thumbnails) en Nautilus, en la versión 11.04 (Natty Narwhal) de Ubuntu.

Dado que estoy trabajando con la última versión de Ubuntu, Raring Ringtail, no lo tenía todavía instalado, y pensé en instalarlo. Sin embargo, al leer en referencia a la aplicación que se utilizaba para realizar las miniaturas (gnome-raw-thumbnailer), parece ser que ha dejado de ser mantenido por sus desarrolladores, y he estado buscando soluciones alternativas, lo que me ha llevado a un par de soluciones bastante interesantes, ambas basadas en UFRaw, y que seguro que a mas de uno le resultarán de mucha utilidad.

0080_temporal.png

UFRaw

Como no puede ser de otra forma,

Unidentified Flying Raw (UFRaw) es una utilidad que permite leer y manipular imágenes en bruto (RAW) de cámaras digitales. Se puede emplear como herramienta independiente, o bien, como complemento de Gimp. Para leer las imágenes en bruto utiliza la herramienta de conversión desarrollada por Dave Coffin DCRaw. UFRaw soporta la gestión de colores basado en Little CMS, y permitiendo al usuario aplicar perfiles de color ICC. Para usuarios de Nikon, UFRaw tiene la ventaja de que puede leer las curvas de tonalidad de la cámara. Con independencia de que tengas una cámara Nikon, tambien puedes aplicar una curva Nikon a tu propia imagen.

Utilizando UFRaw para generar Miniaturas (Thumbnails)

Llegados a este punto el siguiente paso es explicar como puedes utilizar esta aplicación para generar miniaturas. Lo primero, evidentemente es instalar la aplicación. Esto es tan sencillo como hacer clic en el siguiente enlace UFRaw. O bien, desde el terminal:

sudo apt-get install ufraw

El siguiente paso, es crear el archivo «/usr/share/thumbnailers/raw.thumbnailer», con el siguiente contenido:

[Thumbnailer Entry]
Exec=/usr/bin/ufraw-batch --embedded-image --out-type=png --size=%s %u --overwrite --silent --output=%o
MimeType=image/x-3fr;image/x-adobe-dng;image/x-arw;image/x-bay;image/x-canon-cr2;image/x-canon-crw;image/x-cap;image/x-cr2;image/x-crw;image/x-dcr;image/x-dcraw;image/x-dcs;image/x-dng;image/x-drf;image/x-eip;image/x-erf;image/x-fff;image/x-fuji-raf;image/x-iiq;image/x-k25;image/x-kdc;image/x-mef;image/x-minolta-mrw;image/x-mos;image/x-mrw;image/x-nef;image/x-nikon-nef;image/x-nrw;image/x-olympus-orf;image/x-orf;image/x-panasonic-raw;image/x-pef;image/x-pentax-pef;image/x-ptx;image/x-pxn;image/x-r3d;image/x-raf;image/x-raw;image/x-rw2;image/x-rwl;image/x-rwz;image/x-sigma-x3f;image/x-sony-arw;image/x-sony-sr2;image/x-sony-srf;image/x-sr2;image/x-srf;image/x-x3f;

Con esto ya tienes solucionado el asunto.

Utilizando Shotwell para no duplicar

Una alternativa bastante interesante es utilizar las miniaturas generadas por Shotwell, para reducir el espacio ocupado en tu disco. Esta solución, es interesante siempre y cuando las imágenes se importen en el mismo directorio. Es decir, cuando importas imágenes a Shotwell tienes que seleccionar la siguiente opción cuando te pregunte:

0081_Importar a la biblioteca.png

Esto es así, puesto que el script que paso a comentar a continuación, lo que hace es buscar en la base de datos generada por Shotwell el archivo en cuestión (en su ubicación original), de forma que si lo encuentra genera un enlace simbólico a la miniatura generada por Shotwell, y en caso contrario, genera su propia miniatura. Si no empleas Shotwell, lo mas sencillo, es que utilices la herramienta anterior.

El script a utilizar para buscar archivos de Shotwell y hacer el enlace simbólico, se basa en un script original de Anton Keks, pero donde se actualiza la ubicación de las miniaturas tanto de Shotwell como de las generadas para Nautilus, así como tiene en consideración la posibilidad de que la imagen sea en formato , jpg,png o tif.

Para utilizar el script, tienes que crear el archivo «/usr/bin/shotwell-raw-thumbnailer» con el siguiente contenido:

#!/bin/bash
input=$1
output=$2
 
if [ -z $output ]; then
    echo "Usage: $0 input output"
    exit 1
fi
 
file=`echo -n ${input##file://} | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'`
md5=`echo -n $input | md5sum | awk '{print $1}'`

echo $file
echo $md5
 
shotwell_id=`sqlite3 ~/.local/share/shotwell/data/photo.db "select id from PhotoTable where filename = '$file';"`
echo "sqlite3 ~/.local/share/shotwell/data/photo.db select id from PhotoTable where filename = '$file';"
echo `sqlite3 ~/.local/share/shotwell/data/photo.db "select id from PhotoTable where filename = '$file';"`
echo $shotwell_id
if [ -z $shotwell_id ]; then
    ufraw-batch --embedded-image --out-type=png --size=128 $input --overwrite --silent --output=$output
    exit
fi
 
thumb1=`printf ~/.cache/shotwell/thumbs/thumbs128/thumb%016x.jpg $shotwell_id`
thumb2=`printf ~/.cache/shotwell/thumbs/thumbs128/thumb%016x.png $shotwell_id`
thumb3=`printf ~/.cache/shotwell/thumbs/thumbs128/thumb%016x.tif $shotweel_id`
if [ -e $thumb1 ]; then
    thumb=$thumb1
    echo $thumb
elif [ -e $thumb2 ]; then
    thumb=$thumb2
    echo $thumb
elif [ -e $thumb3 ]; then
    thumb=$thumb3
    echo $thumb
else
    ufraw-batch --embedded-image --out-type=png --size=128 $input --overwrite --silent --output=$output
    exit
fi
 
replaceWithLink() {
    sleep 1
    ln -sf $thumb ~/.cache/thumbnails/normal/$md5.png
}
 
# gnome-thumbnail-factory doesn't support links
cp $thumb $output
 
# however, linked thumbnails work, so replace them after a delay
replaceWithLink &

y por último tendrás que cambiar el archivo que he mencionado anteriormente, «/usr/share/thumbnailers/raw.thumbnailer», con el siguiente contenido:

[Thumbnailer Entry]
Exec=/usr/bin/shotwell-raw-thumbnailer %u %o
MimeType=image/x-3fr;image/x-adobe-dng;image/x-arw;image/x-bay;image/x-canon-cr2;image/x-canon-crw;image/x-cap;image/x-cr2;image/x-crw;image/x-dcr;image/x-dcraw;image/x-dcs;image/x-dng;image/x-drf;image/x-eip;image/x-erf;image/x-fff;image/x-fuji-raf;image/x-iiq;image/x-k25;image/x-kdc;image/x-mef;image/x-minolta-mrw;image/x-mos;image/x-mrw;image/x-nef;image/x-nikon-nef;image/x-nrw;image/x-olympus-orf;image/x-orf;image/x-panasonic-raw;image/x-pef;image/x-pentax-pef;image/x-ptx;image/x-pxn;image/x-r3d;image/x-raf;image/x-raw;image/x-rw2;image/x-rwl;image/x-rwz;image/x-sigma-x3f;image/x-sony-arw;image/x-sony-sr2;image/x-sony-srf;image/x-sr2;image/x-srf;image/x-x3f;image/x-NEF;image/x-nikon-NEF;

De esta forma, no creas arhivos duplicados si la miniatura ya la generaste con Shotwell, siempre y cuando, tal y como he mencionado antes, importes los archivos en el directorio en el que se encuentran

Conclusiones

Desde luego, que la segunda solución está mas pensada para usuarios que hagan un uso exhaustivo de Shotwell, no para los ocasionales como puedo ser yo mismo. Pero desde luego, para ese caso, supone un ahorro considerable pues no duplicas las miniaturas.

Por otro lado, he estado haciendo diferentes pruebas para comprobar que imágenes RAW se «miniaturizan», para lo que he utilizado algunas de las disponibles en RAWSamples. De las pruebas realizadas, con diferentes marcas y modelos, he visto que se llega a conseguir el 75% de los thumbnails.

Después de haber estado trabajando en ambas posibilidades, he pensado, que en los próximos días crearé estos paquetes y los añadiré al repositorio, de forma que cualquier usuario lo pueda instalar, sin necesidad de tener que escribir el código, que aunque no es nada complicado, siempre es mas cómodo si se puede instalar desde un repositorio, y se puede mantener fácilmente.

Más información | UbuntuForums, Tech blog of Anton Keks, Launchpad
Imágenes | RAWSamples

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *