Metiendo la uña del pulgar

| Publicado: | Código fuente
"Uña del pulgar", o thumbnail es una versión reducida de una imagen, usada para ayudar a su organización y reconocimiento. En la era de las imágenes digitales, los motores de búsqueda visuales y los programas para organizar imágenes normalmente hacen uso de los thumbnails, así como los sistemas operativos y entornos de escritorio recientes [-]

Hace unos meses mandé a digitalizar unas diapositivas que tenía mi familia. Un par de días atrás empecé a procesarlas, usando el JBrout para agregarle los tags indicando metadata de la imagen (lugar, año, gente que aparece, etc.).

El problema que tuve es que cuando abría con el JBrout fotos que había sacado yo, las veía perfectamente, pero cuando abría las diapositivas, veía una "X" fea que no me decía nada. No tardé demasiado en darme cuenta que el problema era que el JPEG no tenía adentro el correspondiente thumbnail.

Entonces, ¿cómo les metí el thumbnail a cada una?

Luego de buscar un rato por la web (pensé que tenía que haber algún programa que lo hiciera solo y masivo), encontré esta forma (lo más probable es que hayan mil más...).

::
convert foto_original.jpg -thumbnail '200x200>' -unsharp 0x.5 thumbnail.jpg

convert es uno de los utilitarios de la fantástica ImageMagick, toma mi foto_original.jpg y me deja thumbnail.jpg. El -thumbnail le dice que voy a generar justamente un thumbnail, lo cual aparte de cambiar el tamaño hace otras cosas (por ejemplo, le saca toda la metadata interna, para que ocupe menos). El '200x200>' es una notación de ImageMagick que indica que la imagen resultante tiene que caber en una zona de 200 por 200 (o sea, me la reduce manteniendo el factor de forma hasta que el alto o el ancho ocupen como mucho 200 pixeles). El -unsharp 0x.5 lo recomiendan para mejorar la visualización de la imagen pequeñita. En esta página tienen otros detalles y temas a considerar al generar thumbnails (que no se aplican en mi caso).

Luego, para poner esa nueva y pequeña imagen dentro de la original, utilicé otro utilitario:

exiftool '-ThumbnailImage<=thumbnail.jpg' foto_original.jpg

No hay demasiado que explicar en este caso.

Luego de verificar que todo funcionó correctamente, pasé a trabajar todas las diapositivas en masa. Los archivos tenían esta estructura: tres directorios CajaA, CajaB y CajaC (correspondientes a las tres cajas de diapositivas que mandé a digitalizar), con archivos adentro tipo a001.jpg, b033.jpg, etc.

Obviamente no iba a ejecutar esos dos comandos uno por uno para cada imagen, así que pasé a hacer uso del poder de bash, y escribí en la terminal:

for foto in `find -name "????.jpg"`; do
   echo $foto;
   convert $foto -thumbnail '200x200>' -unsharp 0x.5 $foto.thumb;
   exiftool '-ThumbnailImage<='$foto.thumb $foto;
done;

Basicamente, un loop sobre todas los archivos, haciendo un echo para ver qué procesaba, más los dos comandos anteriores.

Esto me dejó todo procesado, pero medio sucio, ya que por cada imagen tenía un .thumb, y además un _original que deja el exiftool. Así que procedí a borrar todo eso:

find -name '*.thumb' -or -name '*_original' | xargs rm

O sea, le dije a find que encuentre todos los archivos que quería borrar, pero en lugar de mostrarlos por pantalla, se los pasé a xargs que los fue tomando y aplicando el rm para borrarlos.

Resultado final: tengo todas mis diapositivas con un thumbnail adentro. Y de paso aprendí un par de utilitarios nuevos, y algunas otras cositas.

Comentarios Imprimir