Renomear e cambiar imaxes desde terminal linux

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.