Batch photo convertion

O bien Convertir Fotos por Lotes.

Al final de una actividad de linux tengo un par de decenas de fotos, normalmente en megapixeles. Ya sea con una camara de 7mp o 10mp las fotos son muy grandes para subirlas a internet, y ademas muy grandes para que un usario las vea. Asi que normalmente les cambio el formato a 800×600 pixeles.

Todo inicia con una lista de imagenes en un directorio:

$ ls *.jpg

cimg001.jpg

cimg002.jpg

Luego usamos una herramienta del paquete ImageMagick que permite manipular imágenes

$ convert cimg001.jpg -resize 62% foto001.jpg

Esto me produce una foto a 800*600 pixeles y les pone un nombre más adecuado al tema de la foto. Pero hacer esto por cada foto cuando tenemos unas 20 o 30 fotos es mucho trabajo. Asi que manipulando cree esta secuencia de una linea:

$ ls *.jpg | awk ‘{print $1 » -«$1}’ | sed ‘s/-cimg/foto/g’ | awk ‘{print «convert » $1 » -resize 62% «$2}’ > resize.sh

La idea es la siguiente:

  1. hacer un listado de los archivos jpg
  2. copiar 2 veces el listado marcando con un guión la segunda columna
  3. sustituir en la segunda columna por el nombre a usar
  4. crear la instrucción de convertir el archivo original en el nuevo nombre
  5. archivar la secuencia en un archivo llamado resize.sh para su ejecución.

Un opción a usar tambien podria ser «convert cimg001.jpg -resize 800*600 foto001.jpg», sin embargo el problema surge con las fotos tomadas en forma vertical.

Se que hay varias opciones para obtener esto, algunos amigos me mostraron ejemplos usando programación. Sin embargo yo no soy programador, aunque creo que ya no voy a poder decir que:  «yo solo soy un simple usuario.» En realidad para mi esto ha sido como graduarme de geek!