Convertire le immagini di un sito web in WebP con Bash

Il formato WebP è raccomandato tra le buone pratiche per l'ottimizzazione della performance dei siti web in virtù della sua capacità di ridurre notevolmente il peso delle immagini salvate in altri formati. In questo articolo, vedremo come creare uno script Bash per effettuare la conversione delle immagini esistenti nel formato WebP.

Prima di implementare il nostro script, è necessario installare il package webp sulla macchina su cui vogliamo effettuare l'operazione di conversione. Questo package è disponibile per tutti i package manager più popolari e usati.

Una volta fatto questo, avremo a disposizione il comando cwebp che effettuerà la conversione con la seguente sintassi:

cwebp immagine.jpg -o immagine.webp

Il nostro script dovrà fare in modo che, se l'immagine convertita esiste, non venga convertita nuovamente e che l'immagine originale venga rimossa.

#!/bin/bash

# Directory base passata come argomento
START_DIR=$1

# Verifica dell'esistenza della directory
if [ ! -d "$START_DIR" ]; then
  exit 1
fi

# Trova tutte le immagini PNG e JPEG/JPG e le converte in WebP
find "$START_DIR" -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" \) | while read IMAGE; do

  # Crea il nome del file WebP
  WEBP_IMAGE="${IMAGE%.*}.webp"
  # Controlla se il file WebP esiste già per evitare doppie conversioni
    if [ ! -f "$WEBP_IMAGE" ]; then
        echo "$IMAGE -> $WEBP_IMAGE"
        cwebp  "$IMAGE" -o "$WEBP_IMAGE" &> /dev/null
        if [ -f "$WEBP_IMAGE" ]; then
          # Rimuove il file originale
          rm "$IMAGE"
          echo "Rimossa $IMAGE"
        fi  
    else
        echo "Il file $WEBP_IMAGE esiste già, salto la conversione."
    fi
done

echo "Conversione completata!"    

Dopo aver reso eseguibile lo script Bash, possiamo usarlo come segue:

./convert-webp.sh public_html/uploads

Conclusione

Convertire le immagini di un sito web nel formato WebP è un modo per ridurre notevolmente il peso delle stesse e migliorare così la performance e l'esperienza utente.

Torna su