Torniamo sull’argomento affascinante dell’ASCII art con un comando molto particolare: jp2a. Prende un’immagine e la trasforma in caratteri da terminale, con effetti curiosi. Può aiutarvi a esprimere il vostro lato artistico o, più semplicemente, a decorare i vostri file di testo. Io lo trovo affascinante per le possibilità che apre.
Installazione
Su Debian, Ubuntu e derivate:
sudo apt install jp2a
Lavora su immagini JPEG e PNG. Per gli esempi ho scelto tre immagini molto diverse fra loro per tipo e colori: una in bianco e nero (scala di grigi), un cavallo molto colorato e, per finire, la Gioconda di Leonardo, forse l’immagine più famosa del mondo. Qui le chiamo immagine01.jpg, immagine02.jpg e immagine03.jpg: sostituite i vostri file.
Il primo tentativo, senza opzioni
Diamo l’immagine in pasto a jp2a senza nessuna opzione:
jp2a immagine01.jpg
Jp2a usa i caratteri disponibili nel terminale, con il colore di base del terminale, per ricreare l’immagine il più fedelmente possibile. Con un po’ di fantasia si riconosce l’originale. E sono proprio caratteri ASCII: potete copiare l’output e incollarlo in un file di testo, oppure direttamente scriverlo su un file:
jp2a immagine01.jpg > immagine01.txt
Lo sfondo: –background
L’immagine di partenza ha uno sfondo molto chiaro e una figura molto scura. Con –background diciamo a jp2a com’è il nostro sfondo, così si regola di conseguenza e inverte la scala dei caratteri:
jp2a --background=light immagine01.jpg
Si distinguono più dettagli, rispetto alla prima versione. I valori possibili sono light e dark (il default è dark, per i terminali con sfondo scuro). Se il vostro terminale ha lo sfondo chiaro, o se l’immagine ha lo sfondo chiaro, provate le due opzioni e scegliete la migliore.
Il colore: –colors
Siamo ancora lontani dall’ottimale perché ci manca il colore. In molti casi non lo avremo, per esempio se dobbiamo scrivere un file di testo, e dovremo accontentarci. Ricordate comunque che è ASCII art: non ha il dettaglio di un’immagine, non vuole averlo, è una forma di astrazione. Con –colors aggiungiamo il colore:
jp2a --colors immagine01.jpg
Anche per un’immagine in scala di grigi, tutto diventa molto più riconoscibile, grazie alle sfumature. Si possono combinare le opzioni:
jp2a --background=light --colors immagine01.jpg
L’effetto è un po’ strano ma la figura in primo piano diventa molto più riconoscibile. Bisogna sperimentare un po’.
Il riempimento: –fill
Un’opzione che trovo affascinante è –fill: riempie lo sfondo di ogni singola cella-carattere con il colore, ottenendo un effetto che più che ASCII art ricorda la pixel art. Si usa insieme a –colors:
jp2a --colors --fill immagine01.jpg
L’immagine è molto leggibile e ha un suo fascino. Possiamo anche scegliere quali caratteri usare dentro le celle, con –chars. Se usiamo due spazi, uno per il carattere chiaro e uno per quello scuro, i caratteri spariscono e resta solo lo sfondo colorato di ogni cella:
jp2a --colors --fill --chars=" " immagine01.jpg
Il risultato è pixel art pura, fatta con i caratteri del terminale. Attenzione: –chars vuole almeno due caratteri, dal più scuro (a sinistra) al più chiaro (a destra), quindi ci vogliono davvero due spazi.
Il cavallo E le altre immagini
Ripetiamo gli esperimenti con la seconda immagine, il cavallo, molto colorato. L’effetto pixel qui è ancora più visibile, per la grana e la profondità di colore. Senza opzioni:
jp2a immagine02.jpg
La sagoma si distingue anche meglio, perché l’immagine è più colorata e contrastata. Con il colore i caratteri danno il meglio di sé:
jp2a --colors immagine02.jpg
Invertendo lo sfondo le sfumature (per esempio sui fianchi del cavallo) si vedono meglio:
jp2a --colors --background=light immagine02.jpg
Con –fill i caratteri nelle celle smettono di avere molto senso: meglio eliminarli, cioè dire di usare spazi:
jp2a --colors --fill --chars=" " immagine02.jpg
La gioconda
Ora un’immagine con meno contrasto delle precedenti: la Gioconda. Chiunque la riconoscerebbe anche in ASCII, forse anche perché è l’immagine più famosa del mondo:
jp2a immagine03.jpg
jp2a --colors immagine03.jpg
Colorata ha un suo fascino particolare, forse ancora più enigmatica dell’originale. Lo sfondo qui cambia poco: con –background=light il software va un po’ in confusione e a mio parere peggiora, mentre dark è più o meno uguale al default:
jp2a --colors --background=light immagine03.jpg
jp2a --colors --background=dark immagine03.jpg
Con –fill il risultato è quasi identico a prima; se togliamo i caratteri interni alle celle otteniamo il nostro piccolo capolavoro di pixel art:
jp2a --colors --fill immagine03.jpg
jp2a --colors --fill --chars=" " immagine03.jpg
La profondità del colore: –color-depth
Si può anche modificare la profondità del colore, con –color-depth=N. I valori validi sono 4 (palette ANSI a 16 colori), 8 (palette a 256 colori) e 24 (truecolor, il default con –colors). Sulla Gioconda con 4 colori è poco riconoscibile, con 8 meglio, con 24 si torna alla situazione di prima:
jp2a --colors --color-depth=4 immagine03.jpg
jp2a --colors --color-depth=8 immagine03.jpg
jp2a --colors --color-depth=24 immagine03.jpg
Sul cavallo l’effetto è molto retro; a 8 bit fa molto anni 80:
jp2a --colors --color-depth=4 immagine02.jpg
jp2a --colors --color-depth=8 immagine02.jpg
Si vede ancora meglio togliendo i caratteri con –fill, e mi ricorda molto la mia infanzia e i videogiochi di quegli anni:
jp2a --colors --fill --chars=" " --color-depth=4 immagine02.jpg
Altre opzioni utili
- -b (o –border) circonda l’immagine con un bordo;
- –width=N e –height=N impostano la larghezza o l’altezza in caratteri, mantenendo le proporzioni;
- –grayscale converte l’immagine in scala di grigi (utile con –colors);
- –output=file scrive il risultato su file.
La lista completa è nella man page e in jp2a –help.
Conclusione
Un video diverso dal solito, ma credo che jp2a abbia un enorme potenziale, anche solo per gli effetti che si ottengono. Installatelo, lanciatelo sulle vostre immagini e sperimentate: fatemi sapere nei commenti cosa avete ottenuto.
Link e risorse
- il video su YouTube
- esempi e comandi della puntata su GitHub
- jp2a(1), pagina di manuale — tutte le opzioni
- Sito di jp2a — il progetto
- ASCII art — in italiano
Sostieni il canale
PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!
questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!
