Il mio sito sul mensile di informatica "OPEN SOURCE"

  Le PNG di immagini "emarginate"

                  II World Wide Web Council ha recentemente pubblicato una seconda

               recommendation per lo standard ISO delle Portable Network Graphic

               o PNG: le caratteristiche di compressione non brevettata, di colore, di

               trasparenza, nettamente superiori rispetto a quelle offerte da GIF e JPG,

               ma non ancora correttamente valorizzate

 

L'attività del World Wide Web Council (W3C, http://www.w3c.org) nel campo della grafica ha portato allo sviluppo, nell'ormai lontano 1996, del formato ISO standard chiamato Portable Network Graphic o PNG (pronunciato "ping"), e ad una recommendation l'anno seguente. Il W3C ha ora emesso una seconda recommendation, sottolineando l'esigenza di una capillare diffusione e maggiore adozione di questo non nuovo standard, open e patent free, conosciuto, molto spesso, nel solo settore del web publishing.
Il motivo iniziale per lo sviluppo della grafica PNG è stato   l'esigenza   di   sostituire   le   GIF   (Graphic Interchange Format), obsolete e risalenti agli anni Ottanta, con un formato decisamente migliore. La ragione della mancata affermazione e diffusione di questo standard, che si rivela purtroppo essere spesso un fenomeno di nicchia, è da ricercarsi nel fatto che, pur essendo negli anni Duemila, gli internet browser stentino ad adottare e ad offrire un sufficiente supporto a questo standard, definito dal W3C da ben otto anni.
Le PNG ad 8 bit, con la sola opzione di trasparenza di tipo binario (on/off), sono supportate praticamente in tutti i più recenti browser, e possono essere più che sufficienti per le esigenze del Web, ma il loro uso dovrebbe essere esteso per godere di tutti i vantaggi. Siamo ormai nel ventunesimo secolo e non ha più senso, ad esempio, mantenere un tag HTML come ALT per supportare text-based browser come Lynx, ma occorrerebbe utilizzarlo in modo più consono. In questo senso sarebbe utile diffondere capillarmente l'uso delle PNG, estendendo ALT per indicare il testo o le immagini alternative per i soli browser che non le supportano.
Le PNG, infatti, sono uno standard più evoluto, provvisto di notevoli qualità: vediamo ora una rassegna delle principali caratteristiche.

 

               

 

Compressione, decompressione e filtraggio
Al contrario delle JPEG, le PNG dispongono di ottimi schemi di filtraggio, algoritmi di compressione e decompressione lossless, che non producono alcuna perdita di informazione sui pixel e risultano essere migliori delle corrispondenti per GIF e JPEG. Inoltre, la compressione delle PNG, se eseguita con criterio, è significativamente migliore (dal 5 al 25%, tipicamente del 20%) rispetto a quella offerta dalle GIF. Risultato: un caricamento più rapido via Web.
Questo è il motivo principale della richiesta di PNG da parte degli sviluppatori di siti.

Colori e alpha
Le PNG hanno disponibile un rilevamento d'errore (errar detection) efficiente, correzione gamma, e un ampio intervallo di profondità di bit di colore, che spazia da 1 bit (monocromatico o grey scale), agli 8 bit delle palette based, ai 64 bit di colore delle truecolor. Le PNG specificano il codice RGB (i tre canali red-green-blue), il cosiddetto true color, più uno alpha ad intervallo continuo per ogni pixel, e non discreto (on/off) come avviene invece per le GIF. Quindi le PNG supportano grayscale, truecolor e palette, mentre le JPEG solo le prime due, e le GIF solo i colori appartenenti ad una determinata tavolozza (indexed color di una palette).
Ad un costo aggiuntivo minimo, il true color migliora notevolmente   la   qualità   delle   immagini,   oltre   a consentire  una  trasparenza  variabile, cosicché  ogni elemento grafico può essere visualizzato su qualsiasi background, chiaro o scuro, con ottimi risultati. Colore e compressione sono due fattori inversamente proporzionali, che bisogna considerare attentamente per non commettere i seguenti errori comuni.
• Utilizzare una  palette con colori non in uso: ciò accade spesso convertendo GIF in PNG. GIF da 10kB con una palette di 256 colori, di cui solo 60 realmente utilizzati, producono uno spreco indimensioni del 60% circa.
• Un altro errore comune è utilizzare un solo tipo di filtro, o utilizzarne parecchi variandoli scorrettamente.

Interlacciamento
E' Notevolmente avanzato rispetto a quello unidimensionale delle GIF: Pinterlacciamento (interlacing) bidimensionale fa apparire più velocemente le PNG, migliorandone la qualità visiva, attraverso le connessioni modem.

Niente brevetti
Le migliori proprietà di compressione, di truecolor ed interlacing dovrebbero essere caratteristiche sufficienti a far preferire le PNG alle GIF. Ne esiste un altro, ideologico, fondamentale dal punto di vista delle sviluppo di software libero o open source. L'algoritmo di compressione delle PNG non è brevettato, come è invece quello, tecnicamente inferiore, delle GIF. Il Graphic Interchange Format è un esempio dei tanti formati grafici vettoriali proprietari usati nel Web, generalmente implementati da plug-in, sviluppati per concessione, che ne limitano il loro libero utilizzo.
Da ciò nasce l'esigenza di avere un unico formato di compressione libero da brevetti, supportato universalmente per la creazione di immagini, per la creazione di encoder freeware.

Il rovescio della medaglia
Una caratteristica implementabile dalle GIF, e che i progettisti dello standard PNG non intendono far supportare, è la visualizzazione di immagini multiple e, in particolare, di animazioni. Le PNG sono pensate come un formato per immagini singole. Per tutti gli altri aspetti evidenziati finora, la sostituzione delle PNG alle GIF è giustificata dalla schiacciante superiorità delle prime sulle seconde. Vediamo ora in dettaglio alcune delle caratteristiche particolari delle PNG: interlacing, compressione e filtraggio, alpha, gamma ed error detection.

Interlacing o progressive display
Per visualizzare un'immagine trasmessa in rete esistono diversi metodi, più o meno efficaci. Le differenze fra di essi sono ben tangibili impiegando connessioni modem non veloci, come gli usuali 56k o ISDN 64K o 128K, mentre risultano meno percepibili con connessioni veloci. La scelta del metodo di trasmissione più opportuno può far apparire la connessione più veloce di quanto non lo sia in realtà, visualizzando quanto prima parte dell'immagine ricevuta. E' questo il fine comune che si prefiggono tutti i metodi di interlacing. Un primo metodo, banale, scontato, da evitare, è attendere la ricezione di tutti i bit che formano la codifica dell'immagine prima della visualizzazione dell'intera immagine (immagini non progressive). E' evidente che una tecnica del genere non sia la migliore per impieghi in browser come Internet Explorer.
Risultati migliori si ottengono visualizzando la porzione di immagine corrispondente ai dati ricevuti fino a quell'istante: ne risulta una visualizzazione a "tendina", dall'alto al basso, tipica delle JPEG. L'interlacing (o interlacciamento, o schermo progressivo), pur aumentando le dimensioni delle immagini rispetto alle corrispondenti non interlacciate.

  

 

 

garantisce, invece, una visibilità decisamente migliore. Sono due i metodi di interlacciamento più diffusi: il primo è quello adottato dalle GIF, mentre il secondo, molto più evoluto, dalle PNG.
L'interlacciamento delle GIF impiega un semplice schema monodimensionale. L'invio dei dati della GIF inizia con la trasmissione, con una prima "passata", di una linea orizzontale su 8, impiegando così 1/8 del tempo totale che avrebbe richiesto il download dell'intera immagine, e dando origine ad una distorsione di 8:1. Al passo successivo è inviata ogni quarta linea non ancora trasmessa, con una distorsione ancora inferiore; quindi ogni seconda linea, e quindi le rimanenti.
Come si può vedere, l'interlacciamento delle GIF è banale, perché unidimensionale. Le PNG usano invece un algoritmo più complesso, bidimensionale, simile a quello delle JPEG progressive, ed anziché eseguire un totale di 4 passate, ne compiono 7.
In 1/64 del tempo totale viene visualizzata l'intera immagine, con una sola passata, con una distorsione minore di 1 su 8, corrispondente alla prima passata delle GIF. Quindi, nell'intervallo di tempo impiegato per una sola passata delle GIF, vengono eseguite ben quattro passate nelle PNG. Quelle successive alla prima aggiungono più informazione, distorcendo i pixel con un fattore non superiore a 2:1. Una PNG interlacciata è letta circa due volte più velocemente della corrispondente GIF. In particolare, la settima passata delle PNG è identica alla quarta delle GIF, e terminano entrambe la trasmissione del 50% dei dati della codifica.
Gli ottimi risultati ottenibili con le PNG sono da ricercare anche nella possibilità che ha il visualizzatore, o il browser, di interpolare i dati dei pixel ricevuti, ovvero calcolare il colore più probabile del pixel compreso tra due già posizionati. Esistono molti schemi di interpolaziene: gli algoritmi bicubico e bilineare sono solo due dei più utilizzati anche nei comuni editor, attraverso effetti molto utilizzati, come fade e focus.

La compressione e filtraggio
II formato PNG è stato progettato per disporre di filtri di compressione in grado di trasformare i dati dell'immagine senza alcuna perdita di informazione (losslessly), per consentire una particolare riduzione delle dimensioni delle immagini truecolor e grayscale. Ad ogni linea orizzontale può essere associato uno fra un insieme di cinque filtri, scelto dall'algoritmo di compressione (implementabile liberamente in qualsiasi software, perché privo di brevetto), e permette di ottenere fattori di compressione elevati, fino a qualche centinaio. Gli algoritmi dei filtri operano sui byte piuttosto che sui pixel, guadagnando così semplicità e velocità sia nelle fasi di compressione, sia in quelle di decodifica

Il canale alpha
Conosciuto anche come canale  di  maschera  (mask channel), è un parametro della codifica di ciascun pixel che specifica il suo livello dì trasparenza. Mentre le GIF hanno  disponìbile   una  trasparenza   di  tipo   binario(ovvero on/off, tutto o niente),  le PNG supportano solitamente fino a 256 livelli (8 bit) di trasparenza parziale.
Tutti e tre i tipi di immagini PNG, greyscale, palette e truecolor, possono avere un canale alpha, il cui uso è molto comune nelle ultime. Anziché associare 8 bit a ciascun canale RGB (Red-Green-Blue), è aggiunto un quarto canale, Alpha, assente nelle GIF, ottenendo la codifica RGBA che consente la creazione di effetti speciali su qualsiasi sfondo, o condizione di luminanza e crominanza. Un'immagine PNG con palette alpha è proprio un'immagine la cui palette dispone anche dell'informazione dell'alpha associata ad essa e non una semplice maschera alpha sovrapposta. In altre parole ad ogni pixel corrisponde una codifica Red-Green-Blue-Alpha della palette utilizzata. L'uso di questo nuovo canale permette, inoltre, di ottenere l'effetto di anti-aliasing, molto apprezzato dai web designer e dai programmatori Macromedia Flash. Variando in modo graduale il colore e la trasparenza dei pixel rettangolari di una matrice è possibile creare l'illusione ottica della presenza di contorni e margini curvilinei, su qualsiasi background. Da ultimo, è possibile, anziché mantenere un canale dedicato all'alpha, eliminarlo moltiplicando l'alpha di ogni pixel per la relativa codifica di colore. Questa tecnica, chiamata premultiplied alpha (alpha premoltiplicato), produce un'inevitabile perdita di informazione, non più recuperabile.

 

Correzione Gamma
Ogni sistema di visualizzazione di un computer è funzione della terna monitor-scheda grafica-computer. Solitamente, ad esempio, la visualizzazione su PC delle immagini create su Macintosh risulta troppo scura e, viceversa, quelle create su PC troppo chiare su Mac. Per ovviare ad inevitabili differenze e garantire la medesima visualizzazione su diversi sistemi, è opportuno registrare la codifica delle immagini PNG in modo standard. Con gamma ci si riferisce ad un parametro, compreso tra O e 1, che identifica univocamente le caratteristiche di visualizzazione della terna monitor-scheda grafica-computer, ed è facilmente ricavabile da un'esame di quest'ultima.
In fase di creazione, editing e, più in generale, di codifica, la PNG è salvata con un gamma normalizzato a 1, mentre durante una nuova visualizzazione viene confrontato il gamma della visualizzazione corrente con quello usato per la creazione: in tal modo è possibile correggere parzialmente la visualizzazione, pilotando opportunamente il DAC (digitai to analog converter) della scheda video. E' una soluzione spesso sufficiente per i comuni monitor, considerando che gamma è anche molto variabile, tipicamente tra 0.3 e 0.7, con centro intorno a 0.5.

Test di integrità (error detection)
Le PNG supportano tre tipi di verifica di integrità al fine di rilevare eventuali errori nel trasferimento di file. Il primo è dato dall'uso di una firma di 8 byte all'inizio di ogni immagine PNG che rileva il più frequente tipo di errore, dovuto alla trasmissione di un file binario in modalità ASCII o txt. La firma all'inizio del file PNG presenta una coppia di caratteri CR/LF (Carriage Return e Line Feed) e un LF singolo. Quando una PNG è trasmessa in modo testo ad un sistema Unix, la coppia CR/LF viene convertita in LF, ad un sistema Mac sia CR/LF sia LF diventano due CR. E' quindi sufficiente esaminare i primi 8 byte per rilevare un'eventuale erronea trasmissione. Il secondo tipo di test è chiamato CRC32 (Cyclic Redundancy Check).
I dati della PNG sono divisi in sequenze, ciascuna delle quali ha associata una CRC, ovvero il risultato sulla somma dell'insieme di bit. La ricezione errata di un bit produce una CRC diversa da quella registrata nella sequenza, e porta alla rilevazione dell'errore.
II terzo tipo di test è simile alle CRC32, ma anziché essere applicata all'immagine PNG filtrata e compressa, la somma dei bit è applicata all'intera sequenza di bit dell'immagine non compressa; viene solitamente impiegata come verifica, a basso livello, delle fasi di codifica e decodifica.

Conclusioni
Dalla trattazione emerge come non siano giustificate la lentezza e la ritrosia nell'adottare estesamente questo standard per immagini, patent-free e di qualità superiore rispetto a quanto offerto da GIF e JPG. L'uso ad ampio spettro delle PNG su Internet potrebbe condurre ad un ulteriore sviluppo e miglioramento degli editor disponibili sul mercato, capaci di manipolare immagini a densità di informazione e compressione maggiori.

WWW.LUCADIFRANCESCO.COM