Categorías
Miniguías

[Como] Modificando imágenes en un directorio

Aunque podremos hacer cualquier tipo de modificación, haremos un ejemplo en el que redimensionaremos todos los archivos de un directorio al 50% (muy útil si preparamos en un directorio muchos archivos directamente de una cámara digital para subir a la web).

$ mogrify -resize 50% directorio/*

Con mogrify podemos hacer lo mismo que con convert, sólo que el fichero de origen y de destino es el mismo.

¿Y si queremos guardar los archivos originales? Tendremos que hacer un pequeño script para convertir los archivos de un directorio y guardarlos en otro direcorio diferente; pero… y si son muchos ? Tenemos algunas posibilidades:

$ for f in prueba/*.jpg; do convert -monitor -resize 50% $f “prueba2/”${f##*/}; done

Si tenemos todos los archivos en el directorio prueba, queremos redimensionar al 50% y guardarlos en prueba2/ con el mismo nombre que tienen. ${f##*/} elimina el directorio del nombre del archivo, es lo mismo que la orden basename. Y con el parámetro -monitor veremos más o menos lo que está haciendo convert en cada momento.

Aunque, tal vez queramos un indicador de progreso para saber más o menos cuánto queda y cuántos archivos llevamos, lo podemos hacer con bc y Xdialog:

archivos=`ls prueba/*.jpg`;

total=`echo $archivos | wc -w`;

hecho=0;

for f in $archivos;

do

convert -resize 50% $f "prueba2/"${f##*/};

let hecho=$hecho+1;

echo "scale=0;$hecho*100/$total"|bc;

done | Xdialog --gauge "Progreso..." 10 100 0

En este ejemplo, separamos en variables los archivos a tratar y contamos el total de archivos a procesar. La variable hecho contará cuántos archivos ha convertido hasta el momento.

Luego en el bucle principal convertiremos los archivos e iremos incrementando la variable hecho en 1. Más adelante, con la ayuda de bc calculamos el porcentaje hecho. El bucle lo pasamos con una pipe a Xdialog, con su opción de gauge con lo que iremos indicando el proceso a medida que se vayan convirtiendo archivos.

 

Poesía Binaria

Deja una respuesta

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