Tag: watermark

Ridimensionare, rinominare e aggiungere un watermark con uno script BASH (zh_rrw.sh)

Chi ha un sito sa bene che caricare le immagini è sempre un mezzo dramma.

Occorre ridimensionare le immagini perchè le attuali macchine fotografiche o i cellulari e i tablet fanno foto grandi come lenzuoli e con pesi (in MB) che non sono sempre comodi da uploadare (e da visualizzare sul sito).

Poi bisogna rinominare i file in modo da gestirli meglio… ma se i file sono molti diventa una scocciatura. Si possono usare programmi per il “rename” massivo, ma non sono sempre pratici.

Poi è carino aggiungere un watermark. E non sempre i programmi che usiamo per rinominare i file in modo massivo hanno questa funzionalità.

Per gestire le foto del mio sito usavo questa strategia:

  • rinominavo le foto a mano (con il tasto funzione F2 in ambiente Linux);
  • ho installato un plugin su WordPress in modo da ridimensionare la foto appena caricata in modo da ridimensionarla secondo una certa dimensione massima
  • poi ho installato un altro plugin su WordPress in modo da aggiungere automaticamente un watermark all’immagine. Il problema è che la dimensione del testo del watermark era fissa e non dipendeva dalle dimensioni dell’immagine caricata. Quindi a volte la scritta era microscopica, mentre altre volte enorme

Poi cercando in internet una soluzione migliore (e che magari mi facesse smacchinare un po’) ho trovato ImageMagick e tutti i suoi comandi per realizzare uno script da eseguire. Di seguito trovate il codice dello script perfettamente funzionante e con i commenti delle principali funzioni.

#!/bin/bash
echo "******************************************"
echo "* Script per ridimensionare, rinominare  *"
echo "* e aggiungere un watermark alle foto    *"
echo "* in modo massivo.                       *"
echo "*   Andrea Rustichelli - Dicembre 2019   *"
echo "*      www.andrea.rustichelli.name       *"
echo "******************************************"

echo "Inserisci il nome per i nuovi files..."
read file_name
echo "Ok, procedo a rinominare i file in: " $file_name

count=0
#scorre tutti i file .jpg presenti nella cartella dello script
for each in *.jpg
 do
  echo "Inizio elaborazione file "$each"..."
  #incrementa il contatore da utilizzare come suffisso del nome del file
  count=`expr $count + 1`
  echo $count
  #il contatore viene convertito su 3 cifre in modo da poter ordinare fino a 999 immagini con lo stesso nome
  count3d=$(printf "%03d" $count)
  #viene composto il nome del file di output
  file_out="$file_name"_"$count3d".jpg
  
  #questo comando di ImageMagick converte il file in modo che la dimensione massima del lato più lungo
  #sia impostato a 1024 pixel... il lato più corto viene ridimensinato di conseguenza per mantenere le
  #proporzioni dell'immagine
  convert -resize 1024x1024\> "$each" "$file_out"
  #questo comando di ImageMagick serve per creare il watermark con la scritta "andrea.rustichelli.name"
  #nalla parte bassa dell'immagine ridimensionata
  convert "$file_out" -pointsize 35 -fill white -undercolor '#00000080' -gravity South -annotate +0+5 'andrea.rustichelli.name' "$file_out"

  #il file originale viene spostato nella sottocartella chiamata "original_file", mentre il 
  #file di output viene spostato nella nella sottocartella chiamata "thumb"
  mv "$each" ./original_file
  mv "$file_out" ./thumb
 done
echo "Elaborazione terminata!"
exit

Permalink link a questo articolo: http://www.andrea.rustichelli.name/ridimensionare-rinominare-e-aggiungere-un-watermark-con-uno-script-bash-zh_rrw-sh/