En un artículo anterior publiqué Cómo redimensionar imágenes para exponerlas en la web en entorno Windows. De este modo es posible enviar las imágenes por correo electrónico o subirlas a una galería de fotos para ser visualizadas por vuestros amigos en Internet. Hoy, os presento la alternativa libre para hacerlo en una unica línea de comandos desde una sesión shell Bash de GNU/Linux sin necesidad de entorno gráfico...
Se trata de utilizar el comando "convert" de ImageMagick que se utiliza con mucha frecuencia desde galerías de fotos PHP para optimizar las y generar los iconos asociados.
Aquí os dejo un pequeño script que podeis escribir en una sola línea:
rename 'y/A-Z/a-z/' * ;
mkdir 640x480;
for i in `ls *.jpg`;
do convert -verbose -quality 65 -strip -resize 640x480 $i ./640x480/$i;
done;
echo FIN;
Y su explicación:
- El carácter ; separa sentencias para poder ejecutarlas en una única línea
- El comando rename 'y/A-Z/a-z/' minusculiza los nombre de archivo (ver artículo
GNU/Linux -
Cómo renombrar archivos en Linux: comando rename)
- El comando "mkdir 640x480" crea el directorio en el que se generarán las nuevas imágenes
- La sentencia "for i in 'ls *.jpg' do ... done" itera sobre toda la lista de archivos resultantes del comando 'ls *.jpg'
- Por último el comando "convert -verbose -quality 65 -strip -resize 640x480 $i ./640x480/$i" reduce cada foto (de nombre $i, es decir, el equivalente al nombre de cada archivo iterado por la sentencia "for...") a un tamaño de 640*480 y 65% de calidad. El parámetro "strip" elimina los datos EXIF para aligerar más todavía; y "verbose" indica que queremos ver mensajes por pantalla de la marcha del proceso.
- El comando "echo FIN" muestra el mensaje de finalización del proceso de conversión
Por supuesto que retocando este pequeño script bash podríais por ejemplo crear iconos asociados de un tamaño menor o añadir un comando para crear un correo electrónico y adjuntar las fotos. Dejo a vuestra imaginación el resto, bajo licencia
GNUAdemás teneis infinitas posibilidades para construir y manipular gráficos de 100 formatos diferentes (incluyendo GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF y DPX) con la suite
ImageMagick. Incluye interesantes interfaces de programación como
MagickCore (C),
MagickWand (C),
ChMagick (Ch),
Magick++ (C++),
JMagick (Java),
L-Magick (Lisp),
PascalMagick (Pascal),
PerlMagick (Perl),
MagickWand for PHP (PHP),
PythonMagick (Python),
RMagick (Ruby), or
TclMagick (Tcl/TK)