Formato GIF
Graphics Interchange Format
Una struttura a blocchi
GIF è uno di quei formati sopravvissuti decenni oltre le previsioni. Creato da CompuServe nel 1987, è ancora dappertutto, soprattutto grazie al supporto per le animazioni.
Il formato usa una struttura a blocchi che, rispetto ai formati moderni, è di una semplicità rinfrescante. Un'intestazione, un paio di descrittori, una tavolozza di colori, i dati dell'immagine e un byte finale che dice "fine".
Struttura di un file GIF
Intestazione GIF
| Offset | Hex | ASCII | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 4749463839618002E001F70000 | GIF89a....... | ||||||||||||
Differenze tra le versioni
Specifica originale. Nessun blocco di estensione.
Aggiunge estensioni, animazioni e trasparenza.
I blocchi di estensione
GIF89a (la revisione del 1989) ha introdotto i blocchi di estensione, ed è così che GIF ha ottenuto le animazioni. Tutti i blocchi di estensione iniziano con 0x21, seguito da un byte che ne indica il tipo: sono quindi facili da riconoscere mentre si scorre un file. Alcuni li vogliamo tenere (i tempi dell'animazione), altri li vogliamo rimuovere (i commenti).
Graphic Control Extension (0xF9)
Governa i tempi dell'animazione, la trasparenza e il metodo di smaltimento. Nelle GIF animate precede ogni descrittore immagine. Sempre mantenuto.
Comment Extension (0xFE)
Commenti in testo semplice. Possono contenere qualsiasi cosa, compresi autore, data di creazione, software o note personali. Rimosso da PicScrub.
Application Extension (0xFF)
Dati specifici di un'applicazione. Il più importante è NETSCAPE2.0, che governa la ripetizione dell'animazione. Può contenere anche metadati XMP.
Plain Text Extension (0x01)
Usato raramente. Disegna del testo usando la tavolozza della GIF. I programmi moderni lo ignorano quasi sempre.
Le estensioni applicative
NETSCAPE2.0:ripetizione dell'animazione
Stabilisce quante volte si ripete una GIF animata. Il valore 0 significa ripetizione infinita.
| Offset | Hex | ASCII | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 21FF0B4E45545343415045322E300301000000 | !..NETSCAPE2.0..... | ||||||||||||||||||
PicScrub mantiene NETSCAPE2.0 per non alterare l'animazione.
XMP Data:Extensible Metadata Platform
Identificatore dell'applicazione: XMP DataXMP. Contiene metadati XMP/RDF completi in formato XML.
PicScrub rimuove le estensioni applicative XMP.
Come restano intatte le animazioni
La parte difficile con le GIF è distinguere i dati dell'animazione (da tenere) dai metadati (da rimuovere). Stanno tutti e due nei blocchi di estensione, quindi non possiamo semplicemente eliminarli tutti.
Mantenuti per l'animazione
- • Numero di ripetizioni di NETSCAPE2.0
- • Graphic Control Extension
- • Tempi dei fotogrammi
- • Metodi di smaltimento
- • Indici di trasparenza
- • Tavolozze locali
Rimossi
- • Estensioni di commento
- • Blocchi applicativi XMP
- • Blocchi applicativi sconosciuti
- • Estensioni di testo semplice
Come PicScrub elabora le GIF
Controllare l'intestazione
Verificare la firma GIF87a o GIF89a
Copiare i dati di intestazione
Mantenere invariati LSD e tavolozza globale
Filtrare le estensioni
Tenere NETSCAPE2.0 e Graphic Control, rimuovere Comment e XMP
Mantenere i dati dell'immagine
Copiare invariati tutti i descrittori immagine, le tavolozze locali e i dati LZW
Scrivere il byte finale
Chiudere il file con il byte 0x3B
La compressione LZW
Due parole sui dati immagine delle GIF: usano la compressione LZW, che è rimasta brevettata fino al 2004 (con tutte le polemiche che ne sono seguite negli anni Novanta). PicScrub non tocca affatto i dati compressi: li copia byte per byte, quindi la qualità non cala di nulla.
Perché è importante
Mantenendo i dati LZW originali, PicScrub garantisce:
- • Nessuna perdita di qualità (immagine identica bit per bit)
- • Elaborazione veloce (nessun ciclo di decodifica e ricodifica)
- • Stessa dimensione per i dati dell'immagine
I limiti dei metadati nelle GIF
La buona notizia sulle GIF è che il formato è precedente allo standard EXIF, quindi non ci sono coordinate GPS o dati della fotocamera di cui preoccuparsi. I problemi di metadati sono più banali.
Che cosa può sfuggire
Per la privacy, le GIF sono un problema piuttosto ridotto rispetto ai JPEG:
- • Estensioni di commento (a volte con note dell'autore)
- • Metadati XMP (rari, ma possibili)
- • Il software identificato nei blocchi applicativi