Convertire più immagini contemporaneamente con ImageMacigk
ImageMagick è una suite multipiattaforma.
Grazie ad essa possiamo svolegere un'infinità di operazioni sulle immagini.
Qui potete trovare tutte le operazioni che può svolegere.
Per convertire le immagini è possibile usare sia convert che mogrify.
Io però uso il primo perchè in fase di conversione effettua una copia, mentre mogrify sovrascrive gli orginali.
La sintassi di base è questa:
$ convert rose.jpg rose.png
Così convertiamo la jpg in una png creandone una copia.
$ convert rose.jpg -resize 50% rose.png
Così oltre a convertirla la riduciamo del 50% mantenendo le proporzioni.
Possiamo anche ridurla così:
$ convert rose.jpg -resize '75' rose.png
Così gli indichiamo la misura in pixel dell'altezza; la larghezza verrà dimensionata mantenendo le proporzioni.
Convert ha tantissime opzioni che potete trovare qua.
Se avete girato un pò per il sito vi serate resi conto che non è possibile fare una guida completa.
Quindi passo a illustrare come fare per processare tante immagini contemporaneamente su Linux (forse funziona anche per Mac ma non ho provato; su Windows invece non funziona in quanto Dos non è Bash).
Per farlo bisogna creare un script che scandagli tutte le immagini di una directory e le converta; lo script deve stare nella cartelle delle immagini.
#!/bin/bash
DIR="thumb"
INPUT=$(ls -1 | grep -i jpg | sed -e 's/ /#/g')
if [ -d $DIR ]
then
echo "La directory thumb esiste già.Eseguo la conversione"
else
mkdir $DIR
fi
echo "$INPUT"
for i in $(echo "$INPUT")
do
file=$i
echo $i
basename=${file%.*}
echo $basename
convert "$(echo $i | sed -e 's/#/ /g')" -resize '75' thumb/"$(echo $basename | sed -e 's/#/ /g')".png
done
DIR è la variabile dove imposto la directory dove salveremo le immagini convertite.
INPUT è la variabile nella quale effettuo la ricerca:
ls -1 lista i file.
grep -i jpg prende tutti quelli che finiscono con jpg; il parametro -i serve per non considerare minuscole e maiuscole (ad esempio prende sia jpg che JPG).
sed è un editor di flusso che esegue delle trasformazioni elementari in un flusso di dati in ingresso, proveniente indifferentemente da una file o da una pipeline. Il flusso di dati viene letto sequenzialmente e la sua trasformazione viene restituita attraverso lo standard output.
Di preciso non so che fanno le varie opzioni in quanto non sono molto esperto di sed.
Dopo la creazione della varibili si apre un if dove controllo l'esistenza della directory DIR; se non c'è viene creata.
Poi col ciclo for scandglio tutte le immagini con l'estensione scelta e le converto, ridimensioni e sposto nella directory thumb.
I vari echo servono solo per controlla meglio il processo in tempo reale.
Se per caso qualcuno crea un alterego per Windows se vuole me lo può dire che lo posto.
imagemagick linux unix mac windows conert mo
Commentami!