giovedì 15 marzo 2012

Bash Script: convertire tutte le immagini presenti in una cartella in JPEG

Lo script bash che vi propongo oggi serve per convertire in formato JPEG tutte le immagini presenti in una cartella.
Ovviamente per fare ciò ci appoggeremo su Imagemagick, quindi assicuratevi di averlo installato prima.
Lo script è il seguente:
#!/bin/bash

echo -n "Inserisci un valore per la qualità finale (1-100): "
read QUA
if [ "$QUA" == "" ]; then
QUA=92
fi

for file in *.bmp *.png *.gif
do
echo "Converto $file in JPEG con qualità $QUA..."
convert "$file" -quality "$QUA" "${file:0:-4}.jpg"
done
echo "Finito!"
Analizziamolo ora: come possiamo vedere all'inizio c'è una semplice richiesta di input per quanto concerne il valore di qualità da affidare alla conversione in JPEG. Subito dopo aver letto il valore inserito con read c'è un controllo se tale valore è stato inserito effettivamente o se semplicemente l'utente ha premuto INVIO senza dargli alcun valore: in questo ultimo caso allora si imposta la qualità ad un valore standard di 92.
Attenzione: a parte questo controllo non viene fatto nulla altro sul valore di input, quindi se l'utente inserisce un valore errato (minore di 1 o maggiore di 100 o ancor peggio una stringa invece di un numero!) non c'è alcuna gestione degli eventuali errori. Molto migliorabile quindi sotto questo punto di vista lo script.
Subito dopo si entra nel ciclo vero e proprio (il FOR) in cui si analizzano tutti i file presenti nell'attuale cartella e che hanno estensione .bmp, .gif e .png. Quando questi file vengono trovati si passa alla conversione tramite appunto il comando convert di Imagemagick, passandogli come parametri il file originale (la nostra immagine), la qualità di conversione e il nome finale dell'immagine risultante compresa di estensione .jpg.
Nota: la scrittura ${file:0:-4} sta a significare di prendere lo stesso nome del file originale dall'inizio (0) e per una lunghezza pari a quella del nome originale meno quattro (ossia meno l'estensione compresa di punto).

Nessun commento:

Posta un commento