Aggiungere testo in cima o in fondo a un’immagine

Creare immagini è bello e divertente, ma a volte una parola vale più di mille pixel colorati. Questo delirio di luoghi comuni (per giunta mischiati) vorrebbe dire che a volte è necessario aggiungere del testo ad un’immagine, ad esempio una forma di copyright. “Facile, usiamo GIMP!” direte voi; si, è una buona soluzione, ma quando le immagini da modificare diventano 1000 (oh, che bel numero) voglio vedervi come vi divertite! Vogliamo che questa operazione sia automatizzata, che possa essere eseguita da uno script. Ovviamente useremo la magia di ImageMagick, fantastica suite di tools grafici da riga di comando di cui ho già avuto modo di parlare, disponibile per tutti i sistemi operativi e le architetture.

I passi da seguire sono pochi e semplici:

1) Creiamo uno spazio; questo sarà destinato ad essere aggiunto in cima o in coda all’immagine di partenza. L’altezza è un valore preimpostato (per il font predefinito suggerisco un 15 px), la larghezza dev’essere quella dell’immagine di partenza, in modo da combaciare.

larghezzapixel=$(identify -format %w immaginedipartenza.png)
convert xc:yellow -resize ${larghezza}x15! blank.ppm

Abbiamo creato un’immagine di nome “blank.ppm” larga come l’immagine di partenza (misurata con “identify”) e alta 15 pixel. Piccolo trucco: se creiamo uno spazio dello stesso colore dello sfondo, la larghezza non importa: in fase di sovrapposizione lo spazio mancante verrà aggiunto col colore di sfondo, che quindi sarà indistinguibile. Possiamo anche usare una larghezza di un pixel!

convert xc:white -resize 1×15! blank.ppm

Ecco cosa abbiamo creato:

addtext_blank

2) Concatenare lo spazio all’immagine di partenza

convert -append  immaginedipartenza.png blank.ppm intermedio.ppm

Abbiamo unito l’immagine di partenza al file “blank.ppm”, e il risultato è salvato in “intermedio.ppm”. NB: conviene utilizzare sempre file “.ppm” per i passaggi intermedi, dato che si tratta di formati lossless; se lavorassimo con formati compressi con perdita a ogni passaggio avremmo una degradazione della qualità dell’immagine.

addtext_intermedio1

3) Scrivere il testo nello spazio creato

convert intermedio.ppm -gravity “South” -draw “text 0,2 ‘simpatico testo'” immaginefinale.png

Prendiamo l’immagine “intermedio.ppm” e vi aggiungiamo il testo “simpatico testo”. “Gravity” definisce la posizione (sud, ovvero in fondo), e lo “0,2” indica l’offset in cui posizionarlo rispetto alla gravity stessa. Il risultato è salvato in “immaginefinale.png”.

addtesx_immaginefinale

Facile, no?

Io uso questo sistema per aggiungere testo in cima e fondo alle mappe che renderizzo con i dati di OpenStreetMap. Questa è la parte di script che uso:

# —- aggiunta header

echo “aggiunta della data alla cartina..”
convert xc:white -resize 1×15! blank.ppm
convert -append blank.ppm ${PNG} intermediate.ppm
convert intermediate.ppm -gravity “North” -draw “text 0,3 ‘Updated on: $(date -r ${OSM}) by PicciMario'” ${PNG}
rm blank.ppm intermediate.ppm

# —- aggiunta footer

echo “aggiunta copyright alla cartina..”
convert xc:white -resize 1×20! blank.ppm
convert -append  ${PNG} blank.ppm intermediate.ppm
convert intermediate.ppm -gravity “South” -draw “text 0,3 ‘Copyright 2008 OpenStreetMap (openstreetmap.org)'” ${PNG}
rm blank.ppm intermediate.ppm

E questo è il risultato:

addtext_map

E per oggi è tutto.. alla prossima!

Questa voce è stata pubblicata in Uncategorized e contrassegnata con , . Contrassegna il permalink.

Una risposta a Aggiungere testo in cima o in fondo a un’immagine

  1. Pingback: Creare una mappa personalizzata da OSM: lo script « Appunti, scoperte e invenzioni

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...