Convertire una presentazione in immagini, includendo le animazioni intermedie

Ieri ho iniziato il lavoro di montaggio video del mio intervento sull’estrazione di dati dalle pagine web. Come gli anni scorsi, anche quest’anno ho parlato utilizzando una presentazione Impress per accompagnare il discorso.

Dato che il video di me che gesticolo è di secondaria importanza, l’intento è mettere in risalto le slide. Per questo ho pensato di convertire tutte le slide in immagini per poi usarle in fase di montaggio. Le slide verranno mostrate a schermo pieno al posto del video, specialmente nei passaggi più importanti, mentre si sentirà la traccia audio per la mia voce.

In linea di principio, avrei potuto creare un PDF della presentazione e convertire quello in tante immagini, una per pagina. Tuttavia, in diverse slide ci sono alcuni punti che compaiono uno alla volta e questo viene perso durante la conversione in PDF.

Animazione del testo all'interno della stessa pagina
Animazione del testo all’interno della stessa pagina

Per questo motivo, ho deciso di seguire un approccio diverso:

  1. mostrare la prima slide
  2. catturare la schermata
  3. andare alla prossima slide
  4. ripetere il procedimento

Tutto questo in modo completamente automatico, ad eccezione dell’atto di terminare la procedura dopo l’ultima slide. Per ottenere il risultato desiderato, ho creato un brevissimo script in Python che utilizza il modulo pyautogui per automatizzare la pressione dei tasti, come suggerito qui. Un’altra funzionalità utile di questo modulo è la facoltà di catturare screenshot, così abbiamo tutto il necessario! 🙂

Prerequisiti

Il modulo pyautogui è sostanzialmente multipiattaforma, in quanto fa tutto il “duro lavoro” di adattamento per eseguire le stesse operazioni sui vari sistemi operativi, le quali normalmente richiederebbero modi diversi di essere compiute.

Tuttavia, è necessario installare anche alcuni componenti aggiuntivi per Linux che verranno utilizzati dal modulo per portare a termine ciò che ci serve. Pertanto, installiamo il modulo nel nostro profilo utente e i pacchetti necessari nel sistema con i comandi:

sudo apt-get install python-xlib python-tk python-pil
pip install --user pyautogui
sudo apt-get install scrot

Il primo pacchetto serve per la simulazione dei tasti e in generale il funzionamento base del modulo. Il secondo pacchetto sarebbe opzionale, ma per noi è necessario perché vogliamo anche che vengano catturati gli screenshot.

Catturare le schermate

A questo punto potete creare una nuova cartella screen con dentro uno script Python, chiamato ad esempio cattura.py. Il contenuto è questo:

#!/usr/bin/env python

import pyautogui
import time

# Attesa iniziale
time.sleep(10)

numero = 1

# Premere Ctrl+C alla fine della presentazione
while True:
    im = pyautogui.screenshot()
    im.save('screen_%03i.png' % numero)
    pyautogui.press('right')
    # Attesa transizione/animazione
    time.sleep(3)
    numero += 1

L’idea di base è semplice. Quando lo script parte, sta fermo per 10 secondi, così potete cambiare finestra e avviare la presentazione con LibreOffice (oppure Calligra Suite). Passato questo tempo, inizia la cattura delle schermate con il nome screen_001.png.

Tra una schermata e l’altra c’è una pausa di 3 secondi, in modo da far finire eventuali effetti di transizione (ad esempio le dissolvenze). Avviate lo script con il terminale, cambiando directory e lanciando il file Python appena creato:

cd /percorso/di/slide/cattura.py
python cattura.py

Poi avviate subito la presentazione e attendete senza toccare nulla. 😉 In poco tempo inizierete a vedere il computer che “va da solo” cambiando slide e attivando le animazioni fino all’ultima pagina.

Vi ricordo che, al posto di digitare tutto il percorso della directory che contiene lo script, potete fare drag’n’drop dell’icona della cartella slide dentro al terminale, dopo aver digitato il comando cd seguito da uno spazio. 😉

Quando la presentazione arriva alla fine, tenete conto che lo script continuerà a premere freccia destra ogni 3 secondi, catturando screenshot. Perciò riaprite il terminale ridotto ad icona e premete i tasti Ctrl+C per terminare il ciclo infinito.

Troverete le schermate (in formato PNG) nella cartella precedentemente creata.

Schermate ottenute con il procedimento descritto
Schermate ottenute con il procedimento descritto

Ritocchi finali

È probabile che, alla fine delle schermate ottenute, ci sia qualche file in più che mostra il vostro desktop dopo aver finito la presentazione ma prima di aver terminato lo script. In questo caso, è sufficiente cancellare le immagini di troppo. 😉

Nel mio caso, ho notato che la funzione di presentazione di LibreOffice lasciava un leggero margine nero in basso e a destra:

Margine nero lasciato da LibreOffice
Margine nero lasciato da LibreOffice

Il margine, misurato con GIMP, risultava di 1 pixel in basso e 2 pixel a destra. Per correggere questo problema ho usato ImageMagick. Il comando, che modifica direttamente le immagini originali, è questo:

mogrify -crop -2-1 screen_*.png

Attenzione che ciò crea delle copie di backup nascoste nella stessa cartella, ad esempio il file screen_001.png verrà copiato con il nome di screen_001.png~ e solo in seguito modificato. Se usate una cartella solo per le slide e poi la eliminate tutta, anche le copie nascoste saranno ripulite. In caso contrario, fate attenzione a non lasciare tracce inutili. 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *