Scegli una GIF
—
Il decodificatore del tuo browser, che riproduce il file così com'è.
- Versione
- —
- Tela
- —
- Peso del file
- —
- Fotogrammi
- —
- Come è scritta
- —
- Come va davvero
- —
- Ripetizioni
- —
- Colori disegnati
- —
Cosa salta all'occhio
Tutto quello che segue è misurato su questo file. Niente qui è un'ipotesi su cosa volevi fare.
Dove sono finiti i byte
Ogni byte del file sta in esattamente una riga, e le righe fanno il file. Se non lo facessero, lo direbbe l'ultima riga, invece che la barra si allungasse in silenzio fino a tornare.
Gli stessi numeri della tabella qui sotto, disegnati come un'unica barra.
| Parte | Byte | Quota |
|---|---|---|
| Tutto il file | — | 100% |
Fotogramma per fotogramma
I colori
La tavola globale
Le tavole dei singoli fotogrammi
Cos'altro c'è là dentro
Blocchi che non portano immagini. Un visualizzatore li salta tutti, e ogni copia del file se li porta dietro lo stesso.
Lettura di {name}… {name} non è un GIF: {why}. Questo strumento legge il formato GIF in sé, quindi non ha niente da dire sugli altri file. {name} non si è potuto leggere: {why} il file finisce a {available} byte e a {at} ne servivano {wanted} in più questo file comincia con {what}, non con «GIF» un JPEG un PNG un file RIFF — un WebP o un WAV un PDF un file zip i byte {bytes} la dimensione di codice è {size}, e il formato ammette da 2 a 8 {n} fotogramma {n} fotogrammi {n} colore {n} colori {n} voce {n} voci {n} tabella per fotogramma {n} tabelle per fotogramma {n} volta {n} volte {n} byte {minutes} min {seconds} s {n} s {time} ({fps} fps) {n} fotogrammi chiedono meno di 0,02 s, e ogni browser li tiene invece 0,10 s. una volta — nessun blocco di ciclo all’infinito {n} volte Problema Da sapere Nota {frames}. {drawn} di essi sono disegnati qui; il resto è troppo grande da tenere in memoria tutto insieme ed è descritto dalle sole intestazioni. {frames}, nessuno dei quali copre tutta la tela. {frames}, tutti a coprire tutta la tela. {frames}, {n} dei quali coprono tutta la tela. Mostra gli altri {frames} Quello che il fotogramma {n} contiene per conto suo La tela dopo il fotogramma {n} Fotogramma {n} non disegnato Ritardo {delay} → 0,10 s Rettangolo {width} × {height} a {left}, {top} Tavolozza {n} sue proprie quella globale nessuna del tutto Trasparenza indice {n} no Dimensione {size} — {share} Interlacciato sì Compresso {ratio}× Guaio i dati finiscono prima del tempo Le tabelle di questo file dichiarano {declared} in tutto, i pixel ne usano {referenced}, e {different} di quelli sono diversi fra loro. {entries}, {size}, condivisa da {frames}. Le voci sbiadite sono quelle a cui nessun pixel fa mai riferimento. {tables} ({size} in tutto) Fotogramma {n} — {colours} Sono mostrate le prime 24 su {n}. Le altre sono nel rapporto scaricabile. Un commento. Nessun visualizzatore lo mostra, e ogni copia del file se lo porta dietro. Il blocco di ciclo, che dice di riprodurre all’infinito. Non fa parte della specifica GIF: Netscape lo inventò nel 1995 e tutti lo implementarono lo stesso. Il blocco di ciclo, che dice di riprodurre {times}. Un pacchetto XMP: l’XML che un editor di immagini scrive per registrare quello che ha fatto. Non lo disegna niente. Un profilo colore ICC, che dice cosa valgono come colori i numeri della tavolozza. Quasi niente ne legge uno da un GIF. Un blocco di testo semplice, che chiede al visualizzatore di disegnare del testo sopra l’immagine. Era nella specifica del 1989 e non è mai stato implementato da niente. Un blocco applicativo. I visualizzatori saltano quelli che non riconoscono. Dura {time} come scritto In realtà dura {time} - {n} fotogramma/i sotto 0,02 s vengono portati a 0,10 s da ogni browser Cadenza {fps} fotogrammi al secondo Cicli nessun blocco di ciclo - riproduce una volta Tavolozza globale {n} colori nessuna Colori disegnati Indice di sfondo Copiato. È testo semplice, ed è andato solo nei tuoi appunti. Questo browser non ha lasciato che la pagina scrivesse negli appunti. Usa «Scaricalo» invece. Intestazione e descrittore dello schermo La firma, la dimensione della tela e i flag. Tredici byte, in ogni GIF mai fatto. Tavolozza globale {colours} colori da tre byte ciascuno, condivisi da ogni fotogramma che non porta la propria. Questo file non ce l’ha: ogni fotogramma porta la sua tavolozza. Tavolozze per fotogramma Una tavolozza tutta sua per un fotogramma che aveva bisogno di altri colori. Tre byte a colore, ogni volta. Blocchi di temporizzazione Otto byte per fotogramma: la pausa, il metodo di pulizia e quale colore è trasparente. Descrittori di fotogramma Undici byte per fotogramma: dove sta il rettangolo, quanto è grande, e la dimensione di codice da cui parte il compressore. Pixel compressi L’immagine vera e propria, compressa in LZW. In un GIF sano è quasi tutto il file. Incorniciatura dei blocchi Un byte di lunghezza ogni 255 byte di dati, più uno zero per chiudere ogni serie. Inevitabile, e vale la pena vederlo. Commenti e metadati Blocchi di ripetizione, commenti, profili colore e qualunque XMP un programma si sia lasciato dietro. Chiusura Un byte che dice che il file è finito. Byte dopo la fine Dati che stanno oltre la chiusura. Nessun decodificatore li legge, e sono peso e basta. Non conteggiati Byte dentro blocchi dove questo lettore si è fermato. Un file che finisce a metà blocco ne lascia. Contati due volte I blocchi si sovrappongono, il che vuol dire che questo file si contraddice su dove cominciano. Non specificato Lasciarlo dov’è Tornare allo sfondo Ripristinare quello che c’era sotto Riservato ({n}) Pulizia Analisi GIF — {name} Letto interamente in un browser da abox.tools/gif-analyzer/. Il file non è stato caricato. Il file Versione Tela {width} x {height} pixel Dimensione {rounded} ({exact}) Fotogrammi Dove sono finiti i byte Totale Quello che salta all’occhio I fotogrammi Testo che il file si porta dietro La tavolozza globale {colours} propri globale tela intera n. a dim. pausa pulizia tavolozza byte Il file finisce senza il byte di chiusura, quindi è incompleto — un download interrotto, o un file troncato. Il byte {at} vale 0x{marker}, che non apre nessun blocco previsto da questo formato. Tutto quello che veniva dopo è stato ignorato. Due blocchi di controllo grafico di fila, a {first} e {second}. Il primo non descrive alcuna immagine e non fa nulla. Il file finisce a metà di un blocco che comincia a {at}. {detail}. Il codice {code} è arrivato per primo, prima che il dizionario contenesse qualcosa. Un visualizzatore disegnerà quello che può e lascerà vuoto il resto del rettangolo. Il codice {code} rimanda alla voce {code} del dizionario, e ne esistono solo {entries}. Un visualizzatore disegnerà quello che può e lascerà vuoto il resto del rettangolo. In questo file non ci sono fotogrammi. L’intestazione si è letta, ma non seguiva alcun blocco immagine. Qualunque cosa sia, nessun visualizzatore ne disegnerà niente. Il file non finisce in modo pulito. {bytes} stanno dopo la fine del file. Ogni decodificatore si ferma al byte di chiusura, quindi questi non vengono mai letti né disegnati. Di solito sono un secondo file attaccato al primo, o un programma che ha scritto oltre sé stesso. Tagliare il file al byte di chiusura non perde nulla. Un fotogramma chiede di restare meno di 0,02 secondi, e nessun browser lo farà. {count} fotogrammi chiedono di restare meno di 0,02 secondi, e nessun browser lo farà. Ogni browser da Netscape in poi arrotonda a dieci un ritardo sotto i due centesimi di secondo — una regola scritta nel 1996 per i mappamondi rotanti dell’epoca e mai tolta. Così questa animazione dice di durare {nominal} e in realtà dura {real}, circa {factor} volte più lenta. Scrivere 0,02 invece di 0,01 le dà la velocità che sta chiedendo. Ogni fotogramma ha ritardo zero. Il file non dà alcun tempo, quindi a che velocità va dipende tutto dal visualizzatore — di solito dieci fotogrammi al secondo, ma niente lo garantisce. Due browser possono riprodurlo a due velocità diverse e avere ragione entrambi. I fotogrammi non hanno un tempo regolare: {delays} ritardi diversi, da {shortest} a {longest}. Un ultimo fotogramma tenuto più a lungo è voluto e comune. Ritardi sparsi nel mezzo di solito vengono da un convertitore che ha lasciato cadere fotogrammi di un video e allungato i vicini per coprire il buco. Non c’è un blocco di ripetizione, quindi questo parte una volta e si ferma. La ripetizione non fa parte della specifica GIF. È un blocco che Netscape ha inventato nel 1995 e che tutti hanno comunque implementato; un file che non ce l’ha è un file che ogni browser mostra esattamente una volta. Se doveva ripetersi, chi lo ha scritto ha lasciato fuori il blocco. Questo parte una volta e poi si ferma. Questo parte {count} volte e poi si ferma. Il blocco di ripetizione indica un numero invece del solito zero, che vuol dire per sempre. Certi visualizzatori più vecchi ignorano il numero e ripetono lo stesso. Ogni fotogramma ridisegna tutta la tela. Una GIF può salvare di un fotogramma solo il rettangolo cambiato rispetto al precedente: per questo la registrazione di una finestra quasi ferma può essere piccola. Qui non lo fa nessuno: ogni fotogramma è tutta la tela, {width}×{height}. Va bene per immagini che non hanno niente a che vedere fra loro, ed è spazio regalato per qualsiasi cosa filmata o registrata, dove gran parte dell’immagine non si muove. Un fotogramma su {total} ridisegna tutta la tela; gli altri salvano solo la parte cambiata. {count} fotogrammi su {total} ridisegnano tutta la tela; gli altri salvano solo la parte cambiata. Ecco come è fatta una GIF ottimizzata. Quelli a tela intera di solito sono il primo fotogramma e ogni punto in cui l’immagine è cambiata del tutto. Nessun fotogramma ridisegna tutta la tela. Ogni fotogramma dopo il primo salva solo il rettangolo cambiato, che è il formato usato come si deve ed è il motivo per cui questo file è piccolo com’è. Un fotogramma esce dalla tela. {count} fotogrammi escono dalla tela. La tela è {width}×{height} e un fotogramma rivendica un rettangolo che sborda dal bordo. I decodificatori non sono d’accordo su cosa farne: alcuni lo tagliano, altri rifiutano il file. La tela è {width}×{height} e alcuni fotogrammi rivendicano un rettangolo che sborda dal bordo. I decodificatori non sono d’accordo su cosa farne: alcuni lo tagliano, altri rifiutano il file. Un fotogramma porta una tavolozza tutta sua, che costa {bytes} — il {share} del file. {count} fotogrammi portano una tavolozza tutta loro, che costa {bytes} — il {share} del file. Una tavolozza propria permette a un fotogramma di usare colori che quella condivisa non ha, e costa tre byte per voce ogni volta che viene scritta. Dove i fotogrammi sono della stessa scena, una sola tavolozza per tutti è insieme più piccola e più stabile da guardare: una tavolozza che sobbalza da un fotogramma all’altro è esattamente ciò che è lo sfarfallio delle GIF. Non c’è una tavolozza globale. Non c’è niente di male — qui ogni fotogramma porta la sua — ma vuol dire che un visualizzatore non ha con cosa dipingere la tela prima che arrivi il primo fotogramma. {entries} voci delle tavolozze non vengono mai usate, e sono {bytes}. Le tavolozze di questo file dichiarano {declared} colori e i pixel ne usano {referenced}. Una tavolozza è sempre lunga una potenza di due, qualunque cosa ci sia dentro, quindi un fotogramma che usa nove colori ne riceve comunque sedici: un po’ di arrotondamento è inevitabile. Molto di più vuol dire che le tavolozze sono state costruite per un’immagine diversa da quella finita dentro. Tutta l’animazione si disegna con un solo colore. Tutta l’animazione si disegna con {count} colori. Questo è disegno piatto, ed è ciò per cui la GIF è stata pensata. Un file così si comprime bene e si retina male, quindi se appare punteggiato è la retinatura la cosa da spegnere. Una fotografia, o qualcosa che ne viene. La GIF dà a un fotogramma al massimo 256 colori, quindi tutto ciò che ha una sfumatura viene approssimato — ed è da lì che arrivano la retinatura e il rumore che rendono grande un file. In questo file c’è un blocco di commento di {bytes}. I commenti non li mostra nessun visualizzatore e se li porta dietro ogni copia del file. Di solito sono il nome di chi lo ha scritto, e ogni tanto qualcosa che l’autore non avrebbe scelto di pubblicare. Un pacchetto di metadati XMP occupa {bytes} — il {share} del file. XMP è il blocco XML che un editor di immagini scrive per registrare quello che ha fatto, e può portare la storia delle modifiche, il software e a volte l’autore. Nessun visualizzatore ne disegna niente. Toglierlo non costa nulla all’immagine. Un profilo colore ICC occupa {bytes}. Il profilo dice cosa significano come colori i numeri della tavolozza. Quasi nulla ne legge uno da una GIF, quindi di solito è peso per niente — ma toglierlo può spostare i colori nei visualizzatori che lo leggono. In questo file c’è un’estensione di testo semplice. Un blocco che chiede al visualizzatore di disegnare del testo sopra l’immagine, in una griglia di celle. Era nella specifica del 1989, non è mai stato implementato da niente, e ogni decodificatore lo salta. Qualunque cosa dica, non comparirà. C’è un blocco applicativo chiamato «{name}», di {bytes}. I blocchi applicativi sono il modo in cui tutto ciò che sta fuori dalla specifica entra in una GIF. I visualizzatori saltano quelli che non riconoscono, quindi questo è peso a meno che qualcosa di preciso lo stia leggendo. Un fotogramma è interlacciato. {count} fotogrammi sono interlacciati. Le righe sono salvate in quattro passate perché un’immagine in arrivo su una linea lenta mostrasse presto una versione grossolana di sé. Aveva senso nel 1993, si comprime un po’ peggio che salvare le righe in ordine, e oggi nessun visualizzatore ne trae vantaggio. Questo file dice di essere GIF{version} e non GIF89a. GIF87a è venuta prima e non ha blocchi di tempo, né trasparenza, né blocco di ripetizione. Un file che si dichiara 87a portandosi dietro una di queste cose è comune — i decodificatori non controllano — ma è segno che l’intestazione è stata copiata invece che scritta. Il colore di sfondo è l’indice {index}, e la tavolozza globale ha solo {entries} voci. Non andrà in crash nulla — i visualizzatori usano il trasparente al suo posto — ma vuol dire che il campo non è mai stato impostato, o è stato impostato per una tavolozza che non è più quella nel file. Il rapporto d’aspetto del pixel è impostato su {ratio}. Un campo per gli schermi che non avevano pixel quadrati. Ogni visualizzatore moderno lo ignora e disegna il fotogramma alla misura salvata, quindi un file che ci conta apparirà stirato a chi lo ha fatto e normale a tutti gli altri. Il compressore ha azzerato il suo dizionario {count} volte. LZW costruisce un dizionario mentre procede e ci stanno 4096 voci; quando si riempie, il codificatore ricomincia. Una volta per fotogramma è normale — è così che un fotogramma comincia. Più di così vuol dire che l’immagine era abbastanza varia da esaurire il dizionario a metà strada, che è quello che fanno una fotografia o una retinatura pesante, ed è il motivo per cui quei file sono grandi. Un fotogramma è identico a quello prima. {count} fotogrammi sono identici a quello prima. Costano tutta la loro dimensione compressa e non cambiano niente sullo schermo. Sommare il loro ritardo al fotogramma precedente apparirebbe esattamente uguale e peserebbe meno. Un fotogramma non si decodifica del tutto. {count} fotogrammi non si decodificano del tutto. I dati compressi finiscono prima che il fotogramma sia pieno. Un visualizzatore disegnerà quello che può e lascerà vuoto il resto del rettangolo. La tua GIF non è andata da nessuna parte. {total} file caricati. {platform} Qualcosa ha contattato {hosts}, e questo strumento non lo fa mai. {platform} Gli script del sito per la pubblicità, la misurazione e il pulsante delle donazioni sono arrivati da {hosts} host; a nessuno di questi è arrivato un file. Gli script del sito per la pubblicità, la misurazione e il pulsante delle donazioni sono arrivati da {hosts} host; a nessuno di questi è arrivato un file.