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 :P 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
[caption id=”” align=”aligncenter” width=”553”] imaxe de exemplo desde HOWTOGEEK.com[/caption]
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 900x675 $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.