GNU/Linux: ASCII art con jp2a

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

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!