Retoque automático de muchas fotos a la vez con convert de imagemagick y construcción de un GIF dinámico


Hace unos días fotografié unas nubes preciosas durante 2 horas y media, una foto cada 30 segundos y me quedé hasta las 6 de la mañana para encontrar la forma de retocarlas todas automáticamente y fabricar con ellas un fichero que las tuviese todas y las mostrase una a una. Esto es lo que hice…

El problema es sencillo de explicar, más de 150 fotos a un copi y un paste y un par de retoques aquí y allá cada una y me muero de viejo antes de terminar.

Bueno el problema es sencillo si sabes dónde mirar y qué hacer, por lo que os paso el trabajo hecho, por si os interesa repetir la experiencia o hacer algo parecido. Por ejemplo podría servir a la pregunta ¿cómo hacer un pequeño banner dinámico?

Retoque automático
Bueno, primer paso, ¿cómo retocar muchas fotos a la vez, de forma automática?

En mi caso necesitaba darle más luz porque me habían quedado un poco oscuras, se ve que la cámara pensaba que tanta luz no debía ser buena y la redujo.
Lo que hice fue lo siguiente: Cree un directorio, en el puse todas las fotos y luego cree un subdirectorio llamado pt. Entre en el directorio donde tenía las fotos y di la siguiente orden (necesita el ImageMagick instalado):

for N in *; do convert -compress jpeg -level 0%,50%,1.2 -enhance -comment “h.says.it” $N pt/$N; done

Veamos, cuál es la función de cada una de sus partes:

El for N in *; do lo que hace junto con el done al final es producir un bucle en el que se ejecutará lo de dentro tantas veces como ficheros contenga. Y subdirectorios, lo que da un error, pero no impide que obtengamos el resultado deseado.

La clave del tratamiento está en esta parte: convert -compress jpeg -level 0%,50%,1.2 -enhance -comment “h.says.it” $N pt/$N; que es la que realmente retoca una a una todas las fotos del directorio. El -compress jpeg manda que se guarde en un jpg pero de tamaño grande por que no se indica el nivel de compresión. No lo indiqué porque luego lo iba a volver a tratar para conseguir comprimirlo en un GIF y preferí que no perdiese la calidad de la foto por las sucesivas compresiones.

La parte -level 0%,50%,1.2 lo que está indicando es que se aumente la luminosidad de la foto de dos formas, el 50% indica que de forma homogénea se aumente la luz de los puntos al doble y el 1.2 es el valor para la función Gamma que también potencia la luminosidad. El -enhance fue un descubrimiento interesante que hice, deja la foto mucho mejor, arregla un poco el estropicio que se hace al darle luminosidad a algunos puntos que ya son luminosos y que se destacan demasiado de los que les rodean.

El comentario de la dirección de mi web personal lo añadí a las fotos con la parte -comment “h.says.it” y la parte final $N pt/$N; le dice que debe hacerlo con cada una de las fotos llamadas según indica la variable $N y que debe guardarlas en el directorio pt con el mismo nombre que tienen.

Construir un GIF dinámico

Para construir un GIF dinámico puse todas las fotos en un directorio y ordené esto:

convert -compress JPEG -delay 20 r*.jpg t/nubesAnimadas.gif

Vale, parece raro, pongo -compress JPEG pero lo que hago es un GIF, bueno eso me servirá para explicaros algo que me di cuenta. Los GIF comprimen pero poco en comparación con los JPEG. El problema es que no pude lograr que los GIF comprimiesen mejor, he probado diferentes formas y esa que pongo es la última, y no logro mejorar la compresión del tamaño. Bueno, al final el compress JPEG no hizo nada pero tampoco molestó.

La parte del -delay 20 es para que entre foto y foto la serie tenga una espera de unos 20 centisegundos. El r*.jpg es para indicar que tome una a una todas las fotos del directorio (todas eran r, un numero y un .jpg). Luego pone el GIF resultante en un subdirectorio que cree antes llamado t con el nombre nubesAnimadas.gif.

El resultado
Si queréis ver el resultado lo tenéis en mi weblog Todo sobre las nubes hospedado gracias a la amabilidad de la gente de Balearweb.net y bloc.balearweb.net.

Cómo convertir automaticamente un monton de imágenes de un formato a otro

Creo que se explica bastante por si mismo, cojo las imágenes del directorio en que estoy, sólo las del formato que quiero cambiar, y las convierto cambiando el nombre con el sed, al formato que deseo tener. No las borro, pero podría hacerlo si añado un rm $image después del convert.

for image in *.thm; do target=`echo $image | sed s/.thm/.jpg/`; convert $image $target; done

Cómo hacer unas miniaturas (Thumbnail)

Es típico en internet ver galerías de fotos con un tamaño pequeño de muestra que pulsando lleva a ver una muestra de tamaño intermedio y al final la de mayor tamaño. En inglés se llaman Thumbnail Gallery. Si tenéis un directorio con unas fotos y queréis tener una miniaturas para ponerlas en internet o para lo que sea, ésto os servirá.

Ir al directorio en que tengáis las fotos.

mkdir peques; for N in *; do convert -resize 800 “$N” “peques/peque_$N”; done

al final dirá esto de lo que no debéis preocuparos:
convert: missing an image filename `peques/peque_peques’.

Y en el subdirectorio peques tendréis todas las fotos en tamaño de 800 puntos horizontales, si habéis indicado 800. Y si haceptáis un consejo, probad con la opción -enhance, da muy buen resultado “armonizando” la imagen, “retocando” pixeles que “desentonan”.

Cómo comprimir más las imágenes de la cámara de fotos

También es típico que después de extraer las fotos de la cámara el tamaño en MBs sea demasiado grande y queramos comprimirlas un poco más.

Ir al directorio en que tengáis las fotos.

mkdir comprimidas

for N in *; do convert -compress jpeg -quality 65 -comment “h.says.it” $N comprimidas/$N; done

al final dirá esto de lo que no debéis preocuparos:
convert: missing an image filename `comprimidas/’.

Y en el subdirectorio comprimidas tendréis todas las fotos en tamaño un poco más aceptable. Podéis jugar con el 65% para poner más o menos compresión. A mi me comprime imágenes que salen a 1.2MB y me las deja a 168KB. Y si haceptáis el mismo consejo de antes, probad con la opción -enhance.

Queda pendiente:
* Mirar de conseguir una compresión para MPEG2, es decir, vídeo en vez de fotos consecutivas. Puede ser una forma de conseguir una muy buena reducción del tamaño. Pero no quitaré el GIF, porque sirve para mirar con detenimiento una cualquiera de todas las fotos, si se desea.

Referencias
No podría haber hecho nada de todo lo anterior sin disponer del software de GIMP, ImageMagick (manual aquí) o si preferís en español aquí tenéis un buen manual con un montón de ejmplos.

Si os miráis el manual veréis que se pueden hacer muchos tipos de retoques en las fotos, cambiar los tamaños, guardar en otros formatos, y un largo etcétera, este es otro claro ejemplo de que muchas veces trabajar con la línea de comandos es mucho más eficiente que andar pulsando botoncitos en las ventanas.

Un saludo y espero que os pueda ser útil para ahorrar trabajo de busqueda por la red.

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2078 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.