Il matrimonio tra la mia distribuzione GNU/Linux Debian Sarge e la mia fotocamera Panasonic™ Lumix DMC-FZ5 è stato commovente: un amore a prima vista !
La fotocamera, infatti, è rilevata come un usb mass storage, cioè come fosse una penna usb qualunque.
Va preliminarmente accertato che siano disponibili i moduli per il supporto usb mass storage, supporto scsi e supporto generico scsi, eventualmente da caricare con il comando #modprobe.
E' bastato dunque collegare la fotocamera, quindi accenderla per rilevare il dispositivo di riferimento (e verificare il relativo file system) con il comando:
#fdisk -l
(...)
Disk /dev/sda: 262 MB, 262144000 bytes
16 heads, 32 sectors/track, 1000 cylinders
Units = cylinders of 512 * 512 = 262144 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1000 255983+ 6 FAT16
Partition 1 has different physical/logical endings:
phys=(998, 15, 32) logical=(999, 15, 31)
(Si può anche procedere con il comando #tail -f /var/log/messages o ancora con #dmesg).
Nel caso soprarichiamato alla fotocamera è stato assegnato il device sda1; sul mio portatile invece è stato assegnato sdb1 perchè i device sdaX sono assegnati al disco rigido e le sue partizioni: la fotocamera potrebbe dunque essere vista anche come sda2, sdb2, ecc. e allora dovremo considerare e sostituire il corretto dispositivo negli esempi seguenti.
Non ci rimane che montare la fotocamera e il relativo filesystem con il comando:
#mount -t vfat /dev/sda1 /mnt/smart
(do per scontato che sia stata precedentemente creata la directory /mnt/smart)
Terminate le operazioni dovremo quindi smontare il dispositivo:
#umount /dev/sda1
e in ultimo spegnere la fotocamera.
elabora immagini
Per l'elaborazione delle immagini possiamo avvalerci di diversi pacchetti (che potremmo eventualmente installare con #apt-get install file libimage-size-perl imagemagick ) quali:
file : per ottenere informazioni sul tipo di file esaminato; ecco un esempio:
$file p1000007.jpg
p1000007.jpg: JPEG image data, EXIF standard 2.2
libimage-size-perl: per usufrire delle comodità del comando #imgsize per determinare facilmente le dimensioni di una immagine registrata nei più comuni formati (XPM, XBM, GIF, JPEG, PNG, MNG, TIFF, PPM, ecc.); ecco un esempio:
$imgsize p1000007.jpg
width="2560" height="1920"
gimp: il programma GNU per la gestione, il fotoritocco, la composizione e la creazione di immagini
imagemagick: -ultimo ma non meno interessante- per consentire diverse elaborazioni sulle immagini quale il ridimensionamento, la rotazione, ecc. delle immagini.
bash: rinomina foto
Ecco uno script bash che utilizzo per rinominare le foto scariscate in un nome, che passo come primo parametro e che mi serve ad identificare il l'oggetto e/o levento fotografato, seguito da un contatore a tre cifre che di norma parte dal numero 1, ovvero dal secondo parametro opzionale passato allo script. L'estensione è 'jpg' minuscola: l'eventuale estensione JPG è convertita automaticamente in minuscolo.
#!/bin/bash
# sintassi: fotoren < base nome file > [ <nr contatore> ]
#
# converte i file *.JPG in *.jpg della dir corrente e quindi le rinomina usando come base il parametro passato e
# un contatore a tre cifre a partire da 1 oppure dal secondo paramentro eventualmente passato
#
# walter -- 27 novembre 2005 -- http://www.zequinha.it
#
if (( $# == 2)) ; then
n=$2
echo "il secondo parametro -da cui partirà il contatore- è: " $n
else
n=1
fi
if (( $# < 0 )) ; then
# rinomino file *.JPG in *.jpg
for i in `ls *.JPG`; do
echo $i "->" `basename $i .JPG`.jpg
mv -i $i `basename $i .JPG`.jpg
done
# controllo di non trovare alcun file di destinazione che andrò a creare
errore=0
p=$n
for i in `ls *.jpg`; do
if (( $p<10 )) ; then
m=00$p
elif (( $n<100 )) ; then
m=0$p
else
m=$p
fi
if [ -f $1$m.jpg ]; then
echo "Errore: esiste già il file destinazione " $1$m.jpg " !"
errore=1
fi
p=$[p+1]
done
if (( errore==1 )) ; then
exit
fi
# rinomino i file
p=$n
for i in `ls *.jpg`; do
if (( $n<10 )) ; then
m=00$n
elif (( $n<100 )) ; then
m=0$n
else
m=$n
fi
echo $i "->" $1$m.jpg
mv -i $i $1$m.jpg
n=$[n+1]
done
echo "fatto: trovati $[n-$p] file !"
else
echo "errore: devi passare come parametro la base del nome del file : "
echo "ad es. <fotoren pippo> creerà pippo1.jpg, pippo2.jpg, ecc."
echo "e facoltativamente il numero dal quale partire la numerazione"
echo "(default=1, gestiti max 3 cifre !)"
fi
Se avete coraggio...utilizzatelo a vostro rischio e pericolo !