Mare quin títol: com convertir recursivament unes imatges JPG a Webp que tenim dins de subcarpetes.

De jpg a webp a Linux

Que si, que la majoria de vosaltres teniu el Güindous, i el xitxarel·lo que us escriu, està obsessionat a fer articles de Linux. Ja son molts anys que treballo amb Debian, i d’aquí no em traureu.

Tasca a realitzar

La tasca a realitzar en un dels trasllats de pàgina web que he hagut de fer aquesta setmana:

  • Tinc una carpeta, i dins moltes subcarpetes (un arbre de carpetes)
  • Dins de cadascuna de les carpetes tinc diferents imatges en diferents formats (jpg, jpeg i png)

I ara concretem què s’ha de fer:

  • De forma senzilla convertir totes aquestes imatges en format webp i reduir-les en mida si superen 950px d’ample o 750px d’altura.

Què necessitem

Necessitarem un programari que treballi amb imatges des de la terminal, o el que és el mateix: imagemagick. És un programari que disposa d’interfície, per`permet treballar-hi des del terminal (important per a la tasca que volem fer).

D’altra banda, necessitarem un mínim de coneixements per a treballar a la terminal de Linux.

Com ho fem

Fàcil.

  • Marxem a la carpeta arrel on tinguem totes les subcarpetes a treballar amb l’explorador de fitxers (dolphin, konqueror…)
  • Premem el botó dret sobre el navegador i escollim l’opció d’Obrir un terminal
  • S’obrirà el terminal situant-se ja a la carpeta que necessitem
  • Executem la següent ordre:

find . -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.jpeg" \) -exec sh -c '

for img; do

magick "$img" -resize "900x750>" "${img%.*}.webp"

done

' sh {} +

Què fa aquesta ordre? Doncs recórrer totes les subcarpetes, agafar totes les imatges que trobi, les reduirà si cal (màxim de 950px d’ample i 750px d’alçada) i les gravarà en format webp amb el mateix nom.

Bé, feu copiar-enganxar al vostre terminal i veureu… (feu còpia de seguretat de les vostres imatges sempre !!!)

Això és tot?

Doncs no. Ens pot interessar eliminar les imatges anteriors (jpg, jpeg o png), per la qual cosa executarem la següent ordre:

find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -delete

Espero que us hagi sigut d’utilitat i si no, que veieu la potència que tenim els que treballem amb Linux.

Observació: la imatge de l’article està creada amb Gemini especificant que el text ha d’estar en català. Prou bé.