sábado, 21 de marzo de 2009

Firma de imágenes automatizada

Buscando la manera de "firmar" unas cuantas fotografías con una marca de agua, de manera automatizada, he dado con la solución, en la Web de Roxana Falasco, en una aplicación llamada ImageMagick.

Lo primero es conseguirse el programa. Los Ubunteros lo tenemos fácil:


sudo aptitude install imagemagick


Los usuarios de Windows y Mac también. En los respectivos nombres de las plataformas tenéis los enlaces a los instaladores.

El resto de usuarios de GNU/Linux, tendréis que tirar de tarball... :-P

Una vez instalado, creé este script para automatizar el proceso:

for img in `ls *.JPG`

do

composite -dissolve 70% -gravity center img_marcadeagua.png $img $img

done

La primera línea indica a la consola que tiene que hacer algo sobre los archivos con extensión *.JPG que hay en el actual directorio.

¡Muy importante! Linux diferencia entre mayúsculas y minúsculas en los comandos. Fíjate si las imágenes tienen la extensión de una manera o de otra. Si están mezcladas, puedes recurrir a un renombrador de archivos masivo para que todas las extensiones sean iguales. Puedes conseguir uno muy bueno así:


sudo aptitude install pyrenamer

Para los usuarios de Windows, os puedo aconsejar Métamorphose, aunque también hay versiones para GNU/Linux.

Una vez solucionado el problema de los nombres y extensiones, la primera linea es interpretada correctamente, lo cual nos lleva a la segunda: do, del inglés hacer. Es evidente, ¿no? Pero... ¿qué tiene que hacer? Lo que dice la tercera línea: composite -dissolve 70% -gravity center img_marcadeagua.png $img $img. Vamos por partes :S...

composite es una de las utilidades de ImageMagick (¿os había comentado que es un programa en modo consola :$?). Compone una imagen a partir de dos. En este caso, nos interesa partir de una, que será la que tendrá nuestra marca de agua, por supuesto tendrá que ser una imagen transparente excepto el motivo a mostrar. En este caso img_marcadeagua.png.

Ni qué decir tiene que ha de ser un formato de imagen que soporte transparencias, como PNG...

$img $img significan, respectivamente, imagen de origen, imagen de salida. Se puede añadir a la segunda variable cualquier cosa, por ejemplo $img-firmado, para que se cree una copia de la imagen con la firma y con el nombre cambiado. Tal como lo tengo yo, se sobreescriben los archivos originales. También es posible añadir un directorio relativo de esta forma: firmado/$img. Se creará una subcarpeta llamada firmado, y dentro acabarán las imágenes nuevas con la marca de agua.

El modificador -dissolve 70% nos indica que se ha de mezclar la imagen con un valor porcentual, en mi caso un 70%. Por otro lado, -gravity center ajusta la posición de la imagen portadora de la marca de agua a que se situe en el centro de la que la va a ser firmada.

Para más detalles sobre los comando de ImageMagick, os remito a su web oficial (en inglés).

Yo lo que hago para procesar en lote un puñado de imágenes, que han de estar orientadas igual (vertical u horizontal) y tener el mismo tamaño, es colocarlas en un mismo directorio, y poner también el script, guardado en un archivo con la extensión *.sh, y la imagen con la marca de agua, previamente preparada con GIMP, también la pongo en la misma carpeta. Hago doble clic sobre el script, y cuando me pregunta qué hacer, le digo que ejecute (da igual, por Terminal o no). Para que ésto salga, hay que activar en Propiedades - Permisos del script la casilla Permitir ejecutar el archivo como un programa.

Podéis ver unos cuantos ejemplos de imágenes marcadas con mi nueva firma en unas fotos que he subido recientemente.

Pasad a verlas, y me decis qué os parecen, tanto las fotos como la firma ;).

Y sobre este truquito, aquí espero vuestras preguntas y dudas, que seguro las habrá. Si algún usuario de Windows quiere intentarlo, le invito a que comparta su experiencia :).

3 comentarios:

  1. No suelo utilizar las marcas de agua, pero a mí con el photoshop en tres pasos me arreglo. ;)

    ResponderEliminar
  2. Tienes razón, Josepin. Para dos o tres imágenes, te puedes apañar bien con Photoshop o GIMP, pero imagínate que tienes que hacer lo mismo con, por ejemplo, un centenar de fotos...

    Para eso si viene muy bien automatizar un poco el proceso.

    Saludos, tocayo ;)

    ResponderEliminar

No hay normas especiales para publicar comentarios en este blog. Sólo las básicas: respeta, no insultes, y no hagas SPAM descaradamente. Tampoco se admitirán comentarios que vulneren la Ley. Cualquier aportación, consulta y crítica es bienvenida, a condición de cumplir estas normas básicas.

Si lo que quieres es ponerte en contacto directamente conmigo, dispones para ello de un formulario de contacto.