Condividi su Facebook
Bash scripting e ImageMagik
Scritto da: spider il 01/10/2009 alle 20:26
Tag: Linux, Bash.Visto 445 volte.

Una cosa molto noiosa da fare è convertire una ad una, le immagini che dovranno essere inseriti in un sito, e magari per ognuna di questi file si vuole una piccola descrizione. Lo script che andremo a esaminare, attraverso il comando convert (un tool di ImageMagik), ridemensiona l' immagine, la salva in una cartella prestabilita, e riempe un file php, per la futura gestione della stessa.

Il file può essere scaricato a questo indirizzo.

Code:

NOME_CARTELLA="./piccole/"
NOME_FILE_CONF="conf.php"
NOME_ARRAY="foto"
SCALE="640X480"
In cima al file troviamo le variabile di settaggio dello script. La cartella dove saranno salvate le immagini modificate, il nome del file creato, il nome dell'array contenente i nomi dell' immagini, e la dimesione della modifica.


Code:

test -z "$1" && error "Inserire una directory"`basename $0`" <directory>"
cd $1 >& /dev/null
[ $? == 1 ] && error "Inserire una directory valida!nDirectory: $1"
test -d "$NOME_CARTELLA" && error "Cartella gia' esistente"
mkdir $NOME_CARTELLA >& /dev/null
[ $? == 1 ] && error "Non ho potuto creare la cartella di destinazione $NOME_CARTELLAn"
Poi abbiamo una serie di controlli. Test è un comando molto utile per fare appunto dei test su espressioni o stringhe. Io qua uso test con l'opzione "-z" per conosccere se la lunghezza di una stringa è zero, e "-d" per sapere se la stringa "$NOME_CARTELLA" è una directory.

Variabili speciali
Altre cose strane che possiamo notare sono $1 e $?
La prima e una variabile, chiamata parametro posizionale e indica il parametro passato allo script o ad una funzione. Quindi se per esempio diamo come comando "unComando primoParametro secondoParametro", $0 sarà equivalente alla stringa "unComando", $1 a "primoParametro" e $2 a "secondoParametro".
$? invece, contiene lo status exit dell'ultimo comando eseguito. Di norma se un comando va a buon fine $? sarà uguale a 0, se si presenta qualche errore 1, se invece il comando non esiste il suo valore è 127.

Codice "veloce"
Code:

[ $? == 1 ] && error "Inserire una directory valida!nDirectory: $1"
In questo pezzo di codice ho usato delle espressioni tipo queste. Utilizzo queste espressioni per quando devo usare un if senza avere un else. In poche parole vuol dire che se è vero logicamente il primo confronto (il suo valore deve essere TRUE) allora fai anche il secondo. Quindi il pezzo di codice preso in esempio poteva anche essere:
Code:
cd $1 >& /dev/null && echo -e "Inserire una directory valida"
Se cd va a buon fine ritorna un TRUE e quindi esegue anche l'altra espressione.

Convert - ImageMagik
Il tool che ho usato e appunto convert e qui di seguito la spiegazione del comando che ho dato.
Code:

convert -resize 640x480 foto1 fotoRidimensionata

L' opzione "- resize 640x480" mi permette di scalare foto1 alla dimensione che ho impostato nella variabile SCALE.
foto1 è l'immagine originale, e fotoRidimensionata è il nome dell'immagine che sara creata da convert.

Scrittura file php
Come detto prima, lo script riempe in automatico un file php.
Mettiamo di avere venti immagini con questo nome pictXX.png, dove XX sono i numeri 01, 02, ..., 20. Aprendo il nostro file appena creato dallo script, avremo avanti qualcosa di questo tipo:
Code:

<?php //file di conf immagini
$foto = array(
   "pict01.png" => "",
   "pict02.png" => "",
   ...
   "pict20.png" => "",
   );
?>
Il nostro compito sarà riempire semplicemente le stringhe vuote con le didascalie che vogliamo. Caricato sul nostro sito immagini e il file di configurazione, e integrando del codice per la gestione dell'array, avremo le nostre immagini con la loro bella didascalia senza tanti problemi.

Spero di esservi stato utile. Alla prossima.


Articoli correlati
Tool utile per la manipolazione di file PDF
Realizzare uno schermo intermittente
Software per il monitoring del consumo elettrico e della temperatura



Aggiungi un commento:
Nick:
captchaInserire il codice: