lunes, 20 de octubre de 2025

Cambio de Tamaño de Imágenes con Mogrify

Con el comando mogrify, que forma parte de ImageMagick, podemos modificar muchas características de archivos de imagen desde la línea de comandos. Para cambiar el tamaño se utiliza el parámetro -resize. El nuevo tamaño de la imagen tiene el formato anchoxalto. Es posible omitir una de las dos dimensiones. En Bash tenemos la opción de usar "pattern matching" para modificar varios archivos.

# mogrify -resize 1024 image.jpg

# mogrify -resize x768 image.jpg

# mogrify -resize 1024x768 *.jpg

Utilizando "brace expansion" podemos indicar varias extensiones de archivo. Con shopt se puede desactivar y volver a activar la distinción entre mayúsculas y minúsculas en los nombres de los archivos. Esto puede ser útil si tenemos algunos archivos con la extensión en mayúsculas y otros con la extensión en minúsculas.

# shopt -s nocaseglob

# mogrify -resize 1024 *.{jpg,jpeg,png}

# shopt -u nocaseglob

Si queremos modificar archivos que se encuentren en subdirectorios podemos usar el comando find para buscar los archivos y ejecutar mogrify con cada uno de ellos. El primer parámetro es el directorio donde empezar la búsqueda. Con el parámetro -regex se le indica la expresión regular que debe cumplir el nombre de los archivos. Si necesitamos que no se distinga entre mayúsculas y minúsculas, en lugar de usar el parámetro -regex debemos usar -iregex.

El parámetro -regextype selecciona el tipo de expresión regular. Por defecto se usa el tipo emacs, en el que es necesario utilizar caracteres de escape. Con otros tipos, como por ejemplo posix-extended, no es necesario y esto hace que sea más fácil escribir la expresión regular.

Para indicar el comando a ejecutar con cada archivo encontrado se usa el parámetro -exec. Los caracteres {} le dicen a find donde incluir la ruta del archivo encontrado. Los caracteres \; marcan donde termina el comando. Con el parámetro -print se muestran las rutas de los archivos encontrados.

# find . -regextype posix-extended -iregex ".*\.(jpg|jpeg|png)$" -print -exec mogrify -resize 1024x768 {} \;

No hay comentarios:

Publicar un comentario