Le miniguide di UbaWeb

Da testo a gif animata - str2gif.sh


Premessa Torna su

18 marzo 2016 - Ubuntu 14.04.4 LTS x86_64, mate, kernel: 3.16.0-50-generic, Bash: 4.3.11(1) -
Era tanto che non pubblicavo una nuova pagina, è arrivato il momento!
Mi è stato chiesto "Come posso unire più gif animate, affiancandole, in modo da ottenere un unico file?", la mia risposta è stata: "Con Imagemagick!" (naturalmente!).
Il classico caso in cui è utile affiancare delle gif è la creazione di testo animato, dove abbiamo un file animato per ogni lettera dell'alfabeto.
Mi sono andato a riguardare la documentazione di Imagemagick sulle animazioni e mi è venuto in mente di fare uno script per automatizzare il processo.
In pratica l'idea originale è stata: passo come argomento la stringa allo script ed ottengo la gif animata della stringa. Poi invece ho fatto uno script interattivo che consente di scegliere colore, durata frame e altezza della gif; quest'ultima utile per ottenere l'effetto scorrimento alto->basso o la visualizzazione di più righe di testo animato.

Il mio script str2gif Torna su

Guardando la documentazione di imagemagick si nota che le istruzioni di base per unire più gif animate sono molto semplici:

convert \( NOME_IMG1.gif -coalesce -append \) \ \( NOME_IMG2.gif -coalesce -append \) \ ... \( NOME_IMGx.gif -coalesce -append \) \ +append -crop xALTEZZA_FINALE +repage -set delay DURATA_FRAME NOME_FILE_OUTPUT.gif

Come si può vedere servono solo i nomi dei file da affiancare (NOME_IMG1.gif NOME_IMG12.gif ...)
L'altezza finale della gif (ALTEZZA_FINALE); normalmente deve essere uguale all'altezza delle gif di partenza ma come vedremo può essere cambiata per ottenere effetti diversi.
La durata del frame (DURATA_FRAME) che serve per regolare la velocità dell'animazione.
Avendo delle gif di partenza organizzate in modo furbo diventa facilissimo fare lo script (infatti ho impiegato più tempo a creare lo script per separare e rinominare in modo adeguato le varie gif che a creare lo script str2gif.sh.

Struttura e caratteristiche delle gif di partenza Torna su

Avendo gif animate per alfabeti in più colori ho creato una directory per ogni colore:
blu, celeste, fuxia, giallo, grigio, oro, rosso, verde, viola, viola2
Il nome di queste directory può essere cambiato a piacimento ricordando che deve servire per indicare il colore da scegliere e che non deve contenere spazi.

Ogni lettera è rappresentata da un file gif con nome uguale a quello della cifra/lettera contenuta.
Per esempio: per "a" avremo "a.gif", per la "A" avremo "A.gif", per "1" avremo "1.gif" e così via.

Per non avere problemi, le gif di partenza dovranno avere tutte la stessa altezza e lo stesso numero di frame.

Uso dello script str2gifTorna su

Una volta scaricato l'archivio compresso, va scompattato dove si vuole e lasciato com'è;
lo script deve trovarsi nella directory contenente le varie directory dei colori.
Avviato lo script con il comando: ./str2gif.sh
viene chiesto di inserire la frase da animare; inserire il testo da trasformare in gif animata e premere Invio
subito dopo vengono elencati i colori disponibili, per non fare errori conviene: copiarne uno, incollarlo nel terminale e premere Invio
poi viene indicata l'altezza finale della gif predefinita "75", per accettarla premere Invio, per cambiarla inserire il valore e premere Invio
alla fine viene indicato il valore di permanenza del frame predefinito "10", per accettarlo premere Invio, per cambiarlo inserire il valore e premere Invio. Più il valore è alto più l'animazione sarà lenta.

La gif animata sarà creata nella stessa directory dello script. Il nome del file sarà del tipo: "frase_inserita-colore.gif"
Una volta creata la gif guardarla, se va bene terminare lo script premendo Invio altrimenti inserire la larghezza desiderata; la gif sarà ridimensionata.

Note Torna su

É possibile aggiungere nuovi set di caratteri, aggiungendo una nuova directory contenente le gif; basta che siano rispettate le regole già citate.

Al momento non sono presenti caratteri di punteggiatura, caratteri accentati, apostrofi e virgolette etc.; sono presenti solo numeri e lettere (maiuscole e minuscole). Avrei intenzione di creare un set di caratteri completo! In seguito vedremo.

Per ottenere l'effetto di scorrimento verso il basso, ridurre l'altezza finale della gif, per esempio inserendo il valore 70 ottengo:


Per ottenere una gif animata su più righe usare un altezza multipla dell'altezza delle gif di partenza, per esempio con altezza doppia 150 ottengo:


Per ottenere un set di caratteri di dimensioni ridotte: fare una copia delle directory contenenti i set di gif, rinominarle (per esempio con rename 's/$/_40/' * otteniamo: blu_40, rosso_40...) e usare mogrify per ridimensionarle.
Per esempio: mogrify -geometry x40 */*.gif (Richiede diversi minuti).

Non conosco la provenienza e quindi la licenza di utilizzo delle gif usate qui, cercherò di ritrovare la fonte.
Se l'autore delle gif, che ringrazio, le riconosce come sue, è pregato di avvisarmi e di dirmi come comportarmi
(citare e linkare la fonte o eliminare del tutto i file?).

Download Torna su

L'archivio scaricabile contiene lo script e gli alfabeti in 10 colori, "pesa" 9.48 MB str2gif.tar.gz.
É possibile scaricare anche il solo script che pesa 1.3 KB str2gif.sh.tar.gz

Lo script è utilizzabile, modificabile e ridistribuibile liberamente, mantenendo però la stessa licenza (Creative Commons BY SA 4.0).
Per quanto riguarda la licenza delle gif dovrebbero essere risorse libere, provengono da un cd del 1998 allegato ad una rivista di informatica! Cercherò di informarmi.

Torna su
Sito realizzato da: UbaWeb di Giovanni Ubaldi

Licenza Creative Commons Tutto il contenuto di questo sito se non diversamente dichiarato è di Giovanni Ubaldi ed è distribuito con Licenza:

Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.