Las herramientas que tenemos desde línea de comandos para procesar fotografías son muy potentes, y permiten hacer modificaciones en un grupo de fotografías de forma automatizada.
Algunas de estas herramientas son:
convert: transforma una fotografía (resize, blur, crop, despeckle, dither, draw on, flio, join, re-sample, etc) creando una nueva imagen que será el resultado de la transformación
mogrify: igual que convert pero la imagen original es sobrescrita con los cambios
jhead: proceso de los datos EXIF que contiene la fotografía
jpegtran: para, entre otras cosas, codificar las fotos en formato JPEG progresivo.
Tanto "convert" como "mogrify" son parte del conjunto de utilidades denominadas ImageMagick, "jpegtran" es parte de las utilidades para procesar JPEG's que en algunos sistemas se instala en la instalación básica (en Ubuntu no), y "jhead" es una utilidad que se puede instalar independientemente.
En Ubuntu Linux:
# apt-get install ImageMagick # apt-get install libjpeg-progs # apt-get install jhead
En OpenBSD:
# pkg_add ImageMagick # pkg_add jpeg # pkg_add jhead
El uso más básico de jhead para visualizar los datos exit de la foto es muy simple: simplemente le pasamos como parámetro el fichero de la imagen.
$ jhead test.jpg File name : test.jpg File size : 106697 bytes File date : 2008:02:08 12:31:21 Camera make : OLYMPUS OPTICAL CO.,LTD Camera model : C5050Z Date/Time : 2006:09:03 18:38:42 Resolution : 800 x 571 Flash used : No Focal length : 7.1mm Exposure time: 1.300 s Aperture : f/1.8 ISO equiv. : 400 Metering Mode: matrix Exposure prog: shutter priority (semi-auto) Jpeg process : Baseline
Y esta es la salida del mismo comando cuando la imagen no contiene datos EXIF:
$ jhead test.jpg File name : test.jpg File size : 9155 bytes File date : 2008:02:08 12:44:31 Resolution : 172 x 162
Algunas utilidades para transformar imágenes no respetan la cabecera EXIF, por lo que es una buena costumbre salvar la cabecera EXIF de la foto que vamos a procesar, hacer las transformaciones que queramos, y finalmente reinsertar la cabecera EXIF en la foto final.
Por ejemplo, si quisieramos usar mogrify para escalar nuestra imagen a 320x240 para usarla en una página web, o para subirla a Flickr, sin perder los datos EXIF, necesitaríamos usar este comando:
$ mogrify -resize 320 test.jpg
Nota que con especificar la anchura deseada (320), el comando calcula la altura que le corresponde sin deformar la foto.
Pero, ¿qué ocurre si nuestro mogrify (u otra utilidad) no conserva los datos EXIF? En este caso podemos usar este comando:
$ jhead -cmd "mogrify -resize 320 &i" *.jpg
que ordena a jhead sacar la cabecera EXIF de la fotografía, procesarla mediante el comando que aparezca en el parámetro "-cmd" (&i es el nombre de la foto), y finalmente reinsertar la cabecera EXIF antes de terminar.
Si en lugar de poner un comando en el parámetro "-cmd" usamos ahí un script que llame a mogrify y a jpegtran, podremos hacer todas las modificaciones que queramos manteniendo la cabecera EXIF de las fotos.
Con estos ingredientes se pueden hacer scripts que automaticen el reescalado de fotos, la inserción de comentarios, o cualquier otra transformación que deseemos.
enlace a esta entrada | categoría: /sistemas |