Annotare le foto digitali per la stampa

Le stampe di fotografie digitali talvolta riportano, nel dorso della foto, la data di quando è stata scattata, estraendola dai dati Exif, se presenti.
Questo è molto utile per collocare una foto nel tempo ma il problema è che se la foto viene incollata su una pagina di un album la data, trovandosi sul dorso, viene persa.

Mi sono chiesto allora: perchè non stamparla di fronte, insieme alla foto ?
Magari insieme ad altre informazioni, una cornice, etc ?
Certo che questo si può fare editando le foto una ad una, ma se ne abbiamo centinaia l’operazione diventa lunga e noiosa.
Exif-annotator è uno script che applica ad ogni foto un template che produce un file svg, il template ha a disposizione l’immagine e tutti i dati Exif, inclusi, se presenti, i tag GPS e, se abilitato il reverse geocoding, le informazioni sulla località più vicina relativa a quelle coordinate.
La logica nel template si occupa della centratura della foto, di inserire un bordo e di presentare i dati Exif in modo opportuno, più eventuali personalizzazioni, esempio mettere una firma o un copyright.
L’annotator si occupa anche di fare il resize ai giusti dpi (punti per pollice) per la stampa ( per default ho messo 300).
Questo, se si stampano piccoli formati classici, riduce le dimensioni dei files che si trasferiscono al servizio di stampa ( e comunque si riduce lo spazio usato sui supporti di memoria che si portano al laboratorio) , facendo risparmiare tempo.

Exif-annotator su Ubuntu richiede che siano installati i pacchetti

php5-cli php5-gd php5-curl imagemagick libxmlgraphics-commons-java libbatik-java

che si possono installare da synaptic oppure tramite il comando

sudo apt-get install php5-cli php5-gd php5-curl imagemagick libxmlgraphics-commons-java libbatik-java

Una volta installati i pacchetti occorre scaricare exif-annotator.
L’ultima versione la trovate qui, le altre qui

Volendo si può fare tutto da linea di comando

cd
wget http://fabrizio.zellini.org/annotator/dist/annotator-latest.tar.gz
tar -xzvf annotator-latest.tar.gz
cd annotator
./exif-annotator.php 
usage: ./exif-annotator.php [OPTION]
  -i, --infile=<infile>               set input file
  -I, --indir=<input directory>       set input directory for scanning (default current)
  -o, --outfile=<outfile>             set output file
  -O, --outdir=<output directory>     set output directory (default current)
      --rename                        rename files after annotation (YYYY-MM-DD_HH-MM-SS.jpg)
      --scan                          search for image files in input directory
      --recursive                     do a recursive scan
      --recurse                       alias for recursive
  -d, --dpi=<output dpi>              output dpi (default 300)
  -r, --rasterizer=<rasterizer>       external svg to jpeg converter: magick | batik, default magick
  -q, --quality=<jpeg quality>        jpeg quality (default 90)
  -t, --template=<input template>     .svg.php input template name
      --list-templates                list available templates and exit
      --geonames-account=<account>    geonames account to reverse geocode images ( see http://www.geonames.org/export/#ws)
  -h, --help  Print this help

L’utilizzo di base è abbastanza semplice:
Ammettiamo di voler ottimizzare delle foto per la stampa, mettiamole in una directory (es. /media/myphoto), poi lanciamo il comando:

./exif-annotator.php  -I /media/myphoto -O outdir --scan --template=10x15-border

A questo punto exif-annotator, per ogni foto presente in /media/myphoto, applicherà il template “10×15-border”, producendo una corrispondente immagine nella directory “outdir”.
L’immagine di uscita dipende dal template, nell’esempio riportato viene applicata una cornice bianco antico e viene visualizzata la data in una linguetta a destra.
Inoltre viene visualizzato “exif-annotator” in basso a destra nella foto.
Questo può essere sostituito con una scritta qualsiasi ( es. uno studio fotografico potrebbe volerci scrivere il suo nome ) o eliminato semplicemente editando il template.
Quest’ultimo in pratica è un file php che produce un file svg che viene renderizzato ancora come jpeg da ImageMagik o Batik

Con l’opzione “–rename” exif-annotator rinominerà le foto, nella directory di uscita, con il pattern YYYY-MM-DD_HH-MM-SS.jpg ovvero con la data e l’ora, questo può essere utile per vedere direttamente nel file manager la data e l’ora della foto.

L’opzione “–recursive” invece dice al programma di andare a cercare le foto nella directory di ingresso e in tutte le sue sotto directory.

Se vi piace geolocalizzare le foto oppure avete una fotocamera che già lo fa ( oramai tutti gli smartphone dotati di GPS lo fanno ), exif-annotator può, usando i web services di geonames.org, mettere a disposizione del template la descrizione del luogo più vicino al quale è stata scattata la foto.
Per usare i servizi di geonames occorre registrarsi, una volta registrati con uno username, basta aggiungere il parametro –geonames-account=<vostro username> per abilitare il reverse geocoding.
I 2 template forniti usano, se presente, questa informazione, visualizzando il luogo nella linguetta a destra in alto.
Ovviamente i template possono essere modificati a proprio piacimento, per farlo occorre conoscere un minimo di programmazione, conto di mettere via via altri template e sul contributo degli utenti.

Ecco qualche foto prima e dopo il trattamento.

Prima (la foto, 5072×3381 pixel, pesa 2.8 Mbytes ed è chiaramente sovradimensionata per una stampa 10×15)

Dopo (ho applicato il template 10×15-border nel quale ho modificato la firma in “Foto Zellini” al posto di quella della distribuzione “exif-annotator”, ho applicato l’opzione geonames-account per mostrare il luogo sulla foto, che si trova sulla linguetta a destra in alto )
La foto è 1771×1181 pixel, ovvero la densità in pixel è esattamente 300 punti per pollice, ottimale per la stampa, inoltre la foto pesa solo 223K, meno di un decimo di quella originale.

Usate i commenti per segnalazioni di bugs o suggerimenti.