Cambiar el tamaño del lienzo con convert -extent
Para cambiar el tamaño del lienzo de una imagen, convert dispone del parámetro -extent, que permite recortar o ampliar el tamaño del lienzo al tamaño indicado.
Su uso más básico es:
convert original.jpg -extent 500x200 destino.jpg
Que cambiará el tamaño del lienzo a 500 píxeles de anchura por 200 píxeles de altura tomando como referencia el píxel 0x0 (la esquina superior izquierda). Si la altura o la anchura es mayor que el tamaño indicado, recortará la imagen en ese valor y si es menor, ampliará el lienzo.
Si no se le indica un color para el fondo, y convert amplía el lienzo, por defecto, colocará un fondo blanco. Para cambiar otro color, se lo indicaremos con -background:
convert original.jpg -background black -extent 500x200 destino.jpg
O, si lo preferimos, podremos usar un fondo transparente, pero tendremos que usar un formato que admita transparencias, como .png:
convert original.jpg -background transparent -extent 500x200 destino.png
Otra de las opciones que nos puede interesar es cambiar el punto de gravedad para no tener que recortar desde la esquina superior izquierda. Lo indicaremos con -gravity:
convert original.jpg -background transparent -gravity center -extent 500x200 destino.png
Y, si lo que queremos es cambiar el tamaño del lienzo de todas las imágenes de un directorio, lo podemos hacer recorriendo ese directorio con un for:
#!/bin/bash dirsource="./imagenes_originales/" dirdest="./imagenes_adaptadas/" if [ ! -d $dirdest ] then mkdir $dirdest fi for filename in $(ls $dirsource) do pathname=$dirsource$filename destiny=$dirdest$filename convert $pathname -gravity Center -extent 800x445 $destiny done
Pingback: Recortar una imagen con el operador -crop de ImageMagick – Linux en Español