Obxetivo: automatizar a tarefa de cambiar o nome, tamaño e tipo de ficheiro das imaxes contidas nun cartafol con un simple comando no terminal.
Acontece a miúdo que se nos presenta un problema ou tarefa repetitiva, tediosa, e empezamos a darlle voltas a cabeza sobre cómo se pode facer eso sen ter que perder tanto tempo repetindo os mesmos pasos e sen cometer erros ou incoherencias?
Acontece tamén que acabaríamos antes facendo a tarefa que tentando buscar facela de xeito máis elegante e automático 😛 Pero utilizar linux ten as súas vantaxes: alguén tivo antes o mesmo problema ca ti (esto non é exclusivo de linux) e ademáis escribeu a solución e fíxoa pública.
Utilizando imagemagick (dispoñible en todas as distribucións) e algún dos seus compoñentes, podemos facer un pequeno script que automatice o traballo en nun par de segundos teñamos un cartafol con 50 imaxes con un novo nome, tamaño, con iconas, tipo de ficheiro, … e moito máis.
Tal como digo, a información é pública e poño unhas ligazóns de onde eu saquei a información.
Cómo convertir ficheiros de imaxe desde terminal Howto: Linux convert an image between different formats from command prompt
En HowToGeek información máis detallada e outras opcións
Script para crear iconas a partir de imaxes dun cartafol Ver os comentarios no artigo para optimización

Tendo esta información en conta, eu simplemente necesitaba convertir unhas imaxes grandes (en tamaño) contidas nun cartafol a versións .jpg das mesmas e todas con un tamaño máis pequeno (escalado).
instalar imagemagick en arch e derivados
pacman -S imagemagick
en ubuntu e similares
sudo apt-get install imagemagick
xunto coas dependencias que pida (se non están instaladas).
Abrir un editor de texto e escribir o código según as nosas necesidades. No meu caso:
#!/bin/bash
#Esto converte ABC.JPG a 900*675 píxeles e nome abc.jpg
# man convert para máis opcións
#lanzar no directorio onde estan as imaxes a cambiar o tamaño
#modificar o tamaño según preferencias.
# ls *.JPG lista todos os ficheiros de extensión .JPG, cambiar esto según necesario
for img in `ls *.JPG`
do
convert -resize 900×675 $img `echo “$img” | tr “[:upper:]” “[:lower:]”`
done
gardámolo onde e co nome que desexemos (ex. scriptImaxes.sh)
dámoslle permisos de execución
chmod +x scriptImaxes.sh
O funcionamento, unha vez feito o script, é:
- abrir un terminal
- moverse ate a carpeta que contén as imaxes a cambiar
- invocar (executar) o script
e como resultado temos na mesma carpeta unha copia das imaxes coas características desexadas.
Por suposto non é preciso facer un script, pódese invocar directamente o comando convert dentro do directorio obxetivo e pasarlle os parámetros que desexemos.