Graphics Interchange Format

Das Graphics Interchange Format ist ein Bitmap-Bildformat, das von CompuServe im Jahr 1987 eingeführt und hat sich seitdem zu weit verbreiteten Nutzung des World Wide Web durch seine breite Unterstützung und Portabilität zu kommen.

Das Format unterstützt bis zu 8 Bit pro Pixel für jedes Bild, so dass ein einziges Bild seine eigene Palette von bis zu 256 verschiedene Farben, die aus der 24-Bit-RGB-Farbraum verweisen. Es unterstützt auch Animationen und ermöglicht eine separate Palette mit bis zu 256 Farben für jeden Frame. Diese Palette Einschränkungen machen das GIF-Format zur Wiedergabe von Farbfotos und andere Bilder mit kontinuierlichen Farb ungeeignet, aber es gut für einfachere Bilder wie Grafiken oder Logos mit Farbflächen ist.

GIF-Bilder werden mit der Lempel-Ziv-Welch verlustfreie Datenkomprimierungstechnik, um die Dateigröße, ohne die Bildqualität zu verringern komprimiert. Diese Kompressionstechnik wurde 1985 Streit um den Lizenzvertrag zwischen der Software-Patentinhaber patentierte, Unisys und CompuServe 1994 trieb die Entwicklung des Portable Network Graphics-Standard. Alle relevanten Patente sind nun abgelaufen.

Geschichte

CompuServe eingeführt das GIF-Format im Jahr 1987 um ein Farbbild-Format für ihre Datei herunterzuladen Bereichen bieten, ersetzen ihre früheren Lauflängen-Kodierungsformat, das schwarz und nur weiß war. GIF wurde populär, weil es verwendet LZW Datenkompression, die effizienter als die Lauflängencodierung, die wie PCX-Formate und MacPaint verwendet, und ziemlich große Bilder konnten daher in einer angemessen kurzen Zeit auch bei sehr langsamen Modems Download bereit war.

Die ursprüngliche Version des GIF-Format wurde 87a bezeichnet. Im Jahr 1989 veröffentlichte CompuServe eine erweiterte Version, genannt 89a, die Unterstützung für Animation Verzögerungen, transparente Hintergrundfarben, und die Lagerung von anwendungsspezifischen Metadaten hinzugefügt. Die 89a-Spezifikation unterstützt auch die Einbeziehung Beschriftungen als Text, sondern als es wenig Kontrolle über die Anzeigeschrift ist diese Funktion nicht weit verbreitet. Die beiden Versionen kann, indem man die ersten sechs Bytes der Datei, die, wenn sie als ASCII interpretiert, lesen Sie "GIF87a" und "GIF89a" bezeichnet unterschieden werden.

GIF gehörte allgemein auf Web-Sites verwendet den ersten beiden Bildformate, die andere ist die Schwarz-Weiß XBM.

Die Funktion der Speicherung von mehreren Bildern in einer Datei, begleitet von Steuerdaten, wird weitgehend auf dem Web, um einfache Animationen zu erzeugen. Die optionale Interlacing-Funktion, die Bildabtastlinien nicht in Ordnung in einer solchen Weise, dass selbst eine teilweise heruntergeladene Bild war etwas erkennbar speichert, half auch GIF Popularität, da könnte ein Benutzer den Download abbrechen, wenn es nicht das, was erforderlich war.

Als Substantiv wird die Wort GIF in den neueren Ausgaben vieler Wörterbüchern zu finden. Im Jahr 2012, dem amerikanischen Flügel der Oxford University Press erkannt GIF als Verb als auch, was bedeutet, "um eine GIF-Datei erstellen", wie in "GIFing war perfektes Medium für den Austausch von Szenen aus den Olympischen Sommerspielen". Lexikographen der Presse stimmten sie ihr Wort des Jahres, sagen, dass GIFs sind in "ein Werkzeug mit schweren Anwendungen, einschließlich Forschung und Journalismus" entwickelt.

Aussprache

Die Schöpfer des Formats GIF ausgesprochen als "Jif" mit einem weichen "G" wie in "Gin". Steve Wilhite sagt, dass der vorgesehene Aussprache bewusst Echos die amerikanische Erdnussbutter Marke Jif und CompuServe Mitarbeiter würden sagen oft, "Choosy Entwickler wählen, GIF", spoofing dieser Marke TV-Werbespots.

Eine alternative Aussprache mit einem harten "G" ist in weit verbreiteter Verwendung. Das American Heritage Dictionary zitiert sowohl, anzuerkennen "jif" als primäre Aussprache, während der OED und der Cambridge Dictionary of American English bieten nur die Aussprache. Merriam-Webster Collegiate Dictionary zitiert beiden Aussprachen, aber legt "gif" in der Standardposition. Die New Oxford American Dictionary gibt nur "jif" in seiner 2. Auflage, sondern aktualisiert es um "jif, gif" in seiner 3. Auflage.

Die Uneinigkeit über die Aussprache hat zu hitzigen Internet Debatte geführt. Anlässlich der Aufnahme eines Lifetime Achievement Award im 2013 Webby Award Zeremonie abgelehnt Wilhite die alternative Aussprache und seine Rede führte zu 17.000 Beiträge auf Twitter und 50 News-Artikel. Das Weiße Haus und TV-Sendungen Jeopardy! auch in die Debatte wateten im Jahr 2013.

Verwendung

  • GIFs sind für scharfkantige Linie Kunst mit einer begrenzten Anzahl von Farben. Dieser nutzt die Vorteile der verlustfreien Kompression des Formats, die ebenen Flächen der einheitlichen Farbe mit gut definierten Kanten begünstigt.
  • GIFs verwendet werden, um Low-Farb Sprite-Daten für Spiele zu speichern.
  • GIFs kann für kleine Animationen und niedrig auflösende Filmclips verwendet werden.
  • Da eine einzelne GIF Bildpalette ist auf 256 Farben, ist es in der Regel nicht als ein Format für digitale Fotografie eingesetzt. Digitalfotografen verwenden Bilddateiformate wiedergeben kann eine größere Auswahl von Farben, wie zum Beispiel TIFF, RAW oder JPEG.

Datei Format

Vom Konzept her eine GIF-Datei beschreibt ein fester Größe grafischen Bereich mit null oder mehr "images" bevölkert. Viele GIF-Dateien haben ein einzelnes Bild, das den gesamten logischen Bildschirm ausfüllt. Andere teilen den logischen Bildschirm in separate Teilbilder. Die Bilder können auch als Animationsframes in einer animierte GIF-Datei funktionieren, aber auch diese müssen nicht den gesamten logischen Bildschirm auszufüllen.

GIF-Dateien beginnen mit einem Header fester Länge geben Sie die Version, gefolgt von einer festen Länge Logische Bildschirm Descriptor geben die Größe und andere Merkmale der logischen Bildschirm. Der Bildschirm-Deskriptor kann auch das Vorhandensein und die Größe eines globalen Farbtabelle, die, falls vorhanden nächste folgt angeben.

Danach wird die Datei in Segmente, die jeweils durch eine 1-Byte Sentinel eingeführt unterteilt:

  • Ein Bild
  • Eine Verlängerung Block
  • Der Anhänger, der das letzte Byte der Datei sein sollte.

Ein Bild beginnt mit einer festen Länge Bild Descriptor, die das Vorhandensein und die Größe eines Local Color Tabelle angeben können. Die Bilddaten folgt: ein Byte geben die Bitbreite der uncodierte Symbole, gefolgt von einer verknüpften Liste von Unterblöcken enthält, die LZW-codierten Daten.

Erweiterungsblöcke bestehen aus dem Sentinel, ein zusätzliches Byte für die Art der Erweiterung, und einer verknüpften Liste von Unterblöcken mit den Erweiterungsdaten. Erweiterungsblöcke, die ein Bild modifizieren, müssen unmittelbar vor das Segment mit dem Bild sie sich beziehen.

Die verknüpften Listen von den Bilddaten und der Erweiterungsblöcke verwendet werden, bestehen aus Reihe von Unterblöcken, wobei jeder Unterblock mit einem Byte, die die Anzahl von nachfolgenden Datenbytes in dem Unterblock beginnt. Die Reihe von Unterblöcken wird durch einen leeren Unterblock abgebrochen.

Diese Struktur ermöglicht die Datei auch analysiert, ob nicht alle Teile verstanden werden. Ein GIF markiert 87a kann Verlängerung Blöcke enthalten; die Absicht ist, dass ein Decoder kann lesen und die Datei, ohne die Merkmale in Erweiterungen es nicht versteht bedeckt.

Der vollständige Details des Dateiformat wird in der GIF-Spezifikation abgedeckt.

Palettes

GIF ist Palette-basiert: die in einem Bild in der Datei verwendeten Farben haben ihre RGB-Werte in einem Palettentabelle, die bis zu 256 Einträge aufnehmen kann definiert und die Daten für das Bild beziehen sich auf die Farben, die durch die Indizes in der Palettentabelle. Die Farbdefinitionen in der Palette kann aus einem Farbraum von Millionen von Schattierungen gezeichnet werden, aber die maximale Anzahl der Farben ein Rahmen verwenden können, ist 256. Diese Beschränkung schien vernünftig, wenn GIF wurde entwickelt, da nur wenige Menschen könnte die Hardware, um weitere Farben anzuzeigen leisten gleichzeitig. Einfache Grafiken, Zeichnungen, Karikaturen und Graustufen-Fotos müssen in der Regel weniger als 256 Farben.

Jedem Pixel zugeordnet dieser Index nimmt die Farbe des Pixels an der gleichen Position von dem Hintergrund, der durch einen vorherigen Rahmen der Animation ermittelten kann: als eine weitere Verfeinerung kann jeder Rahmen ein Index als "transparente Hintergrundfarbe" bezeichnen .

Viele Techniken, das sogenannte Dither wurden entwickelt, um einen breiteren Bereich von Farben mit einem kleinen Farbpalette unter Verwendung der Pixel zwei oder mehr Farben zu approximieren Zwischenfarben nähern. Diese Techniken opfern räumliche Auflösung, tiefer Farbauflösung nähern. Obwohl nicht Teil der GIF-Spezifikation, Dithering kann natürlich in Bildern verwendet werden anschließend als GIF-Bilder kodiert. Dies ist oft nicht eine ideale Lösung für GIF-Bilder, sowohl weil der Verlust der räumlichen Auflösung macht in der Regel ein Bild unscharf sehen auf dem Bildschirm, und weil die Dithering-Muster oft stören die Kompressibilität der Bilddaten, die gegen Hauptzweck GIF.

In den frühen Tagen der grafischen Web-Browser, waren Grafikkarten mit 8-Bit-Puffern häufige und es war recht üblich, GIF-Bilder mit der websicheren Palette zu machen. Dies gewährleistet vorhersehbare Display, aber stark eingeschränkt die Wahl der Farben. Jetzt, 32-Bit-Grafikkarten, die 24-Bit-Farben unterstützt, die Norm sind, können Paletten mit den optimalen Farben für einzelne Bilder aufgefüllt werden.

Eine kleine Farbtabelle kann für kleine Bilder genügen, und halten Sie die Farbtabelle kleine ermöglicht die Datei schneller geladen werden. Sowohl die 87a und 89a Spezifikationen erlauben Farbtabellen von 2 Farben für jedes n von 1 bis 8. Die meisten Grafikanwendungen wird mit einem dieser Tischgrößen lesen und anzeigen GIF-Bilder; aber einige unterstützen nicht alle Größen bei der Erstellung von Bildern. Tabellen von 2, 16 und 256 Farben werden weithin unterstützt.

Wahre Farbe

Obwohl das GIF-Format wird so gut wie nie für True Color-Bilder verwendet wird, ist es möglich, dies zu tun. Ein GIF-Bild können mehrere Bildblöcke, von denen jeder seine eigene 256-Farben-Palette haben, gehören, und die Blöcke können Ziegeln gedeckt, um ein vollständiges Bild zu erzeugen. Alternativ führte die GIF89a-Spezifikation die Idee einer "transparent" Farb wo jeder Bildblock kann eine eigene Farbpalette von 255 sichtbaren Farben plus eine transparente Farbe enthalten. Ein komplettes Bild kann durch Schichtung Bildblöcke mit dem sichtbaren Abschnitt jeder Schicht, welche durch die transparenten Abschnitte der genannten Schichten erzeugt werden.

Um ein vollfarbiges Bild als GIF zu machen, muss das Originalbild in kleinere Regionen mit nicht mehr als 255 oder 256 verschiedenen Farben gebrochen werden. Jeder dieser Bereiche wird dann als eine getrennte Bildblock mit seinen eigenen lokalen Palette und wenn die Bildblöcke werden zusammen angezeigt die vollständige, vollfarbige Bild wird gespeichert. B. Brechen eines Bildes in Kacheln von 16 mal 16 Pixeln sichergestellt, dass keine Fliese hat mehr als die lokalen Palettengrenze von 256 Farben, obwohl größere Fliesen verwendet werden, und ähnlichen Farben zusammengeführt, was zu einem gewissen Verlust an Farbinformationen.

Da jeder Bildblock benötigt eine eigene lokale Farbtabelle kann eine GIF-Datei mit vielen Bildblöcke sehr groß sein, wodurch die Nützlichkeit von Vollfarb-GIFs. Darüber hinaus sind nicht alle GIF-Rendering-Programmen umgehen richtig Fliesen- oder Schichtaufnahmen. Viele Rendering-Programme interpretieren Fliesen oder Schichten, wie Animationsframes und zeigt sie in der Folge als Endlos Animation mit den meisten Web-Browsern automatisch die Anzeige der Frames mit einer Verzögerungszeit von 0,1 Sekunden oder mehr.

Beispiel GIF-Datei

Microsoft Paint-Programm spart eine kleine Schwarz-Weiß-Bild als die folgende GIF-Datei. Farbe nicht optimal nutzen das GIF-Format; wegen der unnötig große Farbtabelle und Symbolbreite ist diese GIF-Datei keine effiziente Darstellung der 15-Pixel-Bild.

Obwohl die Grafiksteuerung Erweiterungsblock erklärt Farbindex 16 transparent zu sein, ist dieser Index nicht im Bild verwendet. Die einzigen Farbindizes in den Bilddaten erscheinen, sind dezimal 40 und 255, die die globale Farbtabelle Karten in Schwarzweiß auf.

Beachten Sie, dass die Hex-Zahlen in den folgenden Tabellen sind im Little-Endian-Byte-Reihenfolge, wie der Format-Spezifikation vorschreibt.

Bildcodierung

Die Bildpixeldaten, horizontal von links oben gescannt, werden von LZW-Codierung, um Codes, werden dann in Bytes für die Speicherung in der Datei zugeordnet umgewandelt. Die Pixelcodes in der Regel nicht übereinstimmen die 8-Bit-Größe des Byte, so dass die Codes durch ein "Little-Endian" Schema in Bytes gepackt: das niederwertigste Bit des ersten Code in das niedrigstwertige Bit der gespeicherten erste Byte, Bits höherer Ordnung des Codes in Bits höherer Ordnung des Bytes, das Überlaufen in die niederwertigen Bits des nächsten Bytes nach Bedarf. Jeder nachfolgende Code ab dem niedrigstwertigen Bit nicht in Verwendung gespeichert.

Dieser Bytestrom wird in der Datei als eine Folge von "Unterblöcke" abgelegt. Jeder Unterblock eine maximale Länge 255 Bytes und ist mit einem Byte, das die Anzahl von Datenbytes in dem Unterblock vorangestellt. Die Reihe von Unterblöcken wird durch einen leeren Unterblock abgebrochen.

Für das Beispielbild über dem reversiblen Zuordnung zwischen 9-Bit-Codes und Bytes ist unten dargestellt.

Eine leichte Kompression ist offensichtlich: Pixelfarben zunächst von 15 Bytes definiert sind exakt 12 Byte-Code, einschließlich Steuercodes dargestellt. Der Codierungsprozess, der die 9-Bit-Codes erzeugt, wird unten gezeigt. Eine lokale String sammelt Pixel-Farbnummern aus der Palette, ohne Ausgabeaktion, solange die lokale String kann in einer Code-Tabelle gefunden werden. Es ist eine besondere Behandlung der ersten beiden Bildpunkte, die vor der Tabelle nimmt von seiner ursprünglichen Größe durch Zusätze von Strings vor. Nach jedem Ausgangscode, wird der lokale Zeichenfolge an die letzte Pixelfarbe initialisiert.

Aus Gründen der Klarheit wird die Tabelle oben als von Zeichenketten mit zunehmender Länge gebaut gezeigt. Diese Regelung kann funktionieren, aber der Tisch verbraucht eine unberechenbare Größe des Speichers. Speicher kann in der Praxis mit der Feststellung, dass jede neue String gespeichert werden soll aus einer zuvor gespeicherten String um ein Zeichen erweitert gespeichert werden. Es ist wirtschaftlich an jeder Adresse speichern nur zwei Worte: eine vorhandene Adresse und ein Zeichen.

LZW-Algorithmus erfordert eine Suche in der Tabelle für jedes Pixel. Eine lineare Suche durch bis zu 4096 Adressen würde die Codierung langsam. In der Praxis können die Codes in der Reihenfolge der Zahlenwert gespeichert werden; Dies ermöglicht jedem die Suche auf ein SAR durchgeführt werden, mit nur 12 Größenvergleiche. Aus diesem Effizienz eine zusätzliche Tabelle benötigt wird, um zwischen den Codes und den tatsächlichen Speicheradressen umzuwandeln; die zusätzliche Tabelle auf Erhalt ist nur erforderlich, wenn ein neuer Code gespeichert ist, das in viel weniger als Pixelrate passiert.

Bilddecodierungs

Decodierung beginnt mit der Abbildung der gespeicherten Bytes zurück in 9-Bit-Codes. Diese werden decodiert, um die Pixelfarben zu erholen, wie unten gezeigt. Eine Tabelle identisch mit der im Codierer verwendet wird, durch Hinzufügen von Zeichenketten mit dieser Regel gebaut:

LZW-Codelängen

Kürzeren Codelängen für Paletten kleiner als die 256 Farben in dem Beispiel verwendet werden. Wenn die Palette nur 64 Farben, können die Symbole 0 bis 63 reichen, und das Symbol Breite ab 7 Bits getroffen werden, um 6 Bits, mit Codes. Beliebige Potenz von 2, solange die Werte decodiert sind immer weniger als die Anzahl der Farben in der Palette, können die Symbole jede Breite von 2 bis 8 ist, und die Palette Größe: In der Tat, so braucht das Zeichen Breite nicht mit der Palettengröße von 2 bis 256. Zum Beispiel, wenn nur die ersten vier Farben der Palette verwendet werden, die Symbole werden können, um 2 Bits breit mit Codes beginnend mit 3 Bits.

Umgekehrt könnte die Symbolbreite auf 8 gesetzt werden, auch wenn nur die Werte 0 und 1 verwendet werden; Diese Daten würden erfordern nur einen 2-Farbtabelle. Obwohl es keine Stelle in der Datei kodiert, so zu sein, etwas Ähnliches passiert in der Regel für Bi-Color-Bilder: die minimale Symbolbreite ist 2, wenn auch nur die Werte 0 und 1 verwendet werden.

Die Codetabelle enthält zunächst Codes, die ein Bit länger als die Symbolgröße, um die beiden Sondercodes CLR und Ende und Codes für Zeichenfolgen, die während des Verfahrens zugegeben werden unterzubringen sind. Wenn die Tabelle voll erhöht die Codelänge, um Platz für mehrere Saiten zu geben, bis zu einer maximalen Code 4095 = FFF. Wie der Decoder baut seine Tabelle es verfolgt diese Erhöhungen der Codelänge und es in der Lage, eingehende Bytes entsprechend zu entpacken ist.

Unkomprimierte GIF

Das GIF-Codierungsprozess kann geändert werden, um eine Datei ohne LZW-Komprimierung, die noch sichtbar ist als GIF-Bild zu erzeugen. Diese Technik wurde ursprünglich als eine Möglichkeit, Patentverletzungen zu vermeiden, eingeführt. Unkomprimierte GIF kann auch eine nützliche Zwischenformat für eine Grafikprogrammierer sein, weil einzelne Pixel zum Lesen oder Malen zugänglich sind. Eine unkomprimierte GIF-Datei kann auf eine gewöhnliche GIF-Datei einfach, indem es durch ein Bildbearbeitungsprogramm umgewandelt werden.

Die modifizierte Codierungsverfahren ignoriert Bau der LZW-Tabelle und gibt nur die Root-Palette-Codes und der Codes für CLEAR und HALT. Dies ergibt eine einfachere Codierung aber alle Opfer des Kompressions: jedes Pixel in dem Bild erzeugt ein Ausgangscode, der seine Farbe Index. Bei der Verarbeitung eine unkomprimierte GIF, wird ein Standard-GIF-Decoder nicht vom Schreiben Saiten seiner Dictionary-Tabelle verhindert werden, aber die Codebreite darf nicht erhöhen, da, dass löst eine unterschiedliche Verpackung von Bits, Bytes.

Eine Symbolbreite gleich n ist, die Codes der Breite n + 1 fallen natürlich in zwei Blöcke: der untere Block von 2 Codes zum Codieren einzelner Symbole und der obere Block von 2-Codes, die durch den Decodierer für Folgen von Länge größer verwendet wird als eine. Dieser oberen Block werden die ersten beiden Codes bereits getroffen: 2 für klare und 2 + 1 für STOPP. Der Decoder muss auch von der Nutzung der letzte Code im oberen Block, 2 verhindert werden - 1, da, wenn der Decoder füllt diese Slot, wird die Codebreite zu erhöhen. Also in dem oberen Block gibt es 2-3 Codes den Decodierer verfügbar, die eine Erhöhung Codebreite nicht auslöst. Weil der Dekodierer immer einen Schritt hinter der Aufrechterhaltung der Tabelle, ist es nicht generieren einen Tabelleneintrag auf den Empfang des ersten Codes von dem Codierer, sondern eine für jeden nachfolgenden Code zu generieren. 2-Codes ohne Auslösung eine Erhöhung der Codebreite - So kann der Geber 2 zu erzeugen. Daher ist der Geber muss zusätzliche CLEAR-Codes im Abstand von 2 emittieren - 2-Codes oder weniger, um die Kodierung Wörterbuch der Decoder zurückgesetzt. Die GIF-Standard erlaubt eine solche zusätzliche CLEAR-Codes, um in den Bilddaten zu jeder Zeit eingesetzt werden kann. Die zusammengesetzte Datenstrom wird in Unterblöcke, die jeder tragen 1-255 Bytes aufgeteilt.

Für die Probe 3x5 Bild oben, die folgenden 9-Bit-Codes darstellen "clear", gefolgt von Bildpixeln in Scan-Reihenfolge und "Stop".

Nachdem die vorstehenden Codes in den Bytes zugeordnet ist, unterscheidet sich die unkomprimierten Datei aus der komprimierten Datei so:

Compression beispiels

Die triviale Beispiel für ein großes Bild von einfarbig demonstriert die mit variabler Länge LZW-Komprimierung in GIF-Dateien verwendet.

Die gezeigten Code-Werte werden in Byte, die dann in Blöcke von bis zu 255 Byte gepackt sind gepackt. Ein Block von Bilddaten beginnt mit einem Byte, das die Anzahl der Bytes, die folgen, erklärt. Der letzte Datenblock für ein Bild wird durch eine Null-Blocklängen-Byte markiert.

Verflechtung

Das GIF-Spezifikation ermöglicht jedes Bild innerhalb der logischen Bildschirm einer GIF-Datei, um festzulegen, dass es interlaced ist; dh, dass die Reihenfolge der Rasterlinien in seinem Datenblock nicht sequentiell. Dies ermöglicht eine Teilanzeige des Bildes, das erkannt werden kann, bevor die volle Bild bemalt werden.

Ein Zeilensprung-Bild ist von oben nach unten in Streifen 8 Pixel hoch aufgeteilt und die Zeilen des Bildes sind in der folgenden Reihenfolge dargestellt:

  • Übergeben Sie 1: Zeile 0 aus jedem Streifen.
  • Pass 2: Linie 4 aus jedem Streifen.
  • Pass 3: Linien 2 und 6 aus jedem Streifen.
  • Pass 4: Linien 1, 3, 5 und 7 von jedem Streifen.

Die Pixel in jeder Zeile sind nicht verschachtelt, aber nacheinander präsentiert von links nach rechts. Wie bei nicht verschachtelten Bilder, solange keine Unterbrechung zwischen den Daten für eine Zeile und die Daten für die nächste. Der Indikator, der ein Bild interlaced ist ein bisschen in die Bildkopfblock gesetzt.

Animierte GIF-

Grundanimation wurde der GIF89a-Spezifikation über die Grafikbedienfeld-Erweiterung, die verschiedene Bilder in der Datei mit Zeitverzögerungen lackiert werden können aufgenommen. Eine animierte GIF-Datei besteht aus einer Reihe von Bildern, die nacheinander angezeigt werden, die jeweils von einem eigenen GCE, die die Zeitverzögerung zu warten, nachdem der Rahmen gezeichnet gibt eingeführt. Globale Informationen am Anfang der Datei gilt standardmäßig auf alle Rahmen. Die Daten-Stream-orientiert, so dass die Datei-Versatz von dem Beginn jedes GCE abhängig von der Länge des vorangehenden Daten. In jedem Rahmen der LZW-codierten Bilddaten werden in Unterblöcke bis zu 255 Bytes angeordnet sind; die Größe jedes Unterblocks wird durch das Byte, dass es voran erklärt.

Standardmäßig zeigt jedoch eine Animation der Sequenz von Rahmen nur einmal, zu stoppen, wenn das letzte Bild angezeigt wird. Da GIF ist so konzipiert, dass Benutzer neue Blöcke zu definieren, Netscape in den 1990er Jahren verwendet die Application Extension Block zur Umsetzung der Netscape Application Block. Dieser Block unmittelbar vor allen Animationsrahmen platziert, gibt die Anzahl von Malen, die Folge von Vollbildern wiedergegeben werden sollen. Unterstützung für diesen Wiederholungs Animationen erschien zuerst in Netscape Navigator Version 2.0, und dann verteilt, um andere Browser. Die meisten Browser nun anerkennen und unterstützen NAB, obwohl es streng genommen nicht Teil der GIF89a-Spezifikation.

Das folgende Beispiel zeigt die Struktur der Animationsdatei Rotierende earth.gif an der Oberseite des Artikels angezeigt.

Die Animation Verzögerung für jeden Rahmen in der GCE in Hundertstelsekunden angegebene. Einige Wirtschaft von Daten möglich ist, wo ein Rahmen braucht nur einen Teil der Pixel der Anzeige neu zu schreiben, weil die Bild Descriptor definieren eine kleinere Rechteck, um statt des gesamten Bildes neu gescannt werden. Displays, die keine animierten GIFs zeigen nur den ersten Frame.

Internet Explorer verlangsamt GIFs, wenn die Bildrate beträgt 20 Bilder pro Sekunde oder höher und Microsoft berichtet, dass Google Chrome und Safari auch unten einige GIF-Animationen verlangsamen.

Unisys und LZW-Patent Durchsetzung

In 1977 und 1978, Jacob Ziv und Abraham Lempel veröffentlicht ein Paar von Papieren auf einer neuen Klasse von verlustfreie Datenkomprimierungsalgorithmen, jetzt gemeinsam als LZ77 und LZ78 bezeichnet. Im Jahr 1983, Terry Welch entwickelt eine schnelle Variante des LZ78 die den Namen Lempel-Ziv-Welch.

Welch eine Patentanmeldung für die LZW-Verfahrens im Juni 1983. Der resultierende Patent, US 4.558.302, im Dezember 1985 erteilt wurde, um Sperry Corporation, die später fusionierte mit Burroughs Corporation in 1986 und gebildet Unisys zugeordnet. Weitere Patente wurden in Großbritannien, Frankreich, Deutschland, Italien, Japan und Kanada erhalten.

Im Juni 1984 wurde ein Artikel von Welch in der IEEE-Magazin, die öffentlich beschrieb die LZW-Technik zum ersten Mal veröffentlicht. LZW wurde ein populärer Datenkompressionstechnik, und wenn das Patent erteilt wurde, in die Lizenzverträge eingetragen Unisys mit über hundert Unternehmen.

Die Popularität der LZW geführt CompuServe, um sie als Kompressionstechnik für die GIF-Format 1987 entwickelt Zum Zeitpunkt wählen, war nicht bekannt, CompuServe des Patents. Unisys wurde bewusst, dass das GIF-Format verwendet LZW-Kompressionstechnik und trat im Januar 1993 in Lizenzverhandlungen mit CompuServe Die nachfolgende Vereinbarung wurde am 24. Dezember 1994 bekannt gegeben, Unisys erklärt, dass sie erwartet, dass alle großen kommerziellen Online-Informationsdienstleistungsunternehmen unter Verwendung der LZW Patent auf die Technologie von Unisys zu einem vernünftigen Preis zu lizenzieren, aber dass sie nicht lizenziert werden müssen, oder Gebühren zu entrichten, für nicht-kommerzielle, gemeinnützige GIF-basierte Anwendungen, einschließlich der für den Einsatz auf der Online-Dienste.

Nach dieser Ankündigung gab es weit verbreitete Verurteilung von CompuServe und Unisys, und viele Software-Entwickler bedroht, die Verwendung des GIF-Format. Das PNG-Format wurde 1995 als Ersatz gedacht entwickelt. , Den Erhalt der Beihilfe von den Machern von Web-Browser und andere Software für das PNG-Format erwies sich jedoch als schwierig, und es war nicht möglich, die GIF-Format zu ersetzen, obwohl PNG hat sich allmählich an Beliebtheit zugenommen. Die libungif Bibliothek, basierend auf Eric S. Raymonds giflib, ermöglicht die Erstellung von GIFs, die das Datenformat folgt aber vermieden die Komprimierungsfunktionen, wodurch Nutzung des Unisys LZW-Patent.

Im August 1999 Unisys verändert die Einzelheiten ihrer Genehmigungspraxis, kündigt die Option für Besitzer von bestimmten nicht-kommerzielle und private Websites, um Lizenzen gegen Zahlung einer einmaligen Lizenzgebühr von $ 5.000 oder $ 7.500 erhalten. Diese Lizenzen wurden für Website-Besitzer oder andere GIF-Benutzer, die lizenzierte Software benutzt hatte, um GIFs erzeugen erforderlich. Dennoch wurde Unisys, um Tausende von Online-Angriffen und missbräuchlicher E-Mails von Benutzern glauben, dass sie im Begriff waren, $ 5000 geladen oder für die Verwendung von GIF-Dateien auf ihren Websites verklagt werden ausgesetzt. Trotz geben kostenlose Lizenzen, um Hunderte von Non-Profit-Organisationen, Schulen und Regierungen, Unisys war völlig unfähig, jede gute Publicity zu generieren und weiterhin von Einzelpersonen und Organisationen wie der League for Programming Freedom, die die "Brennt alle GIFs" -Kampagne gestartet verurteilt werden .

Die Vereinigten Staaten LZW-Patent am 20. Juni 2003. Die Gegen Patente im Vereinigten Königreich abgelaufen, Frankreich, Deutschland und Italien am 18. Juni 2004 abgelaufen ist, am 20. abgelaufen die japanischen Amtskollegen Patente Juni 2004 und das Gegenstück der kanadischen Patent am 7. Juli 2004 abgelaufen . Während folglich Unisys hat weitere Patente und Patentanmeldungen in Bezug auf Verbesserungen des LZW Technik wird das GIF-Format kann nun frei verwendet werden.

Alternativen

PNG

Portable Network Graphics wurde als Ersatz für das GIF-Format, um eine Verletzung des Unisys-Patent auf den LZW-Kompressionstechnik zu vermeiden konzipiert. PNG bietet eine bessere Kompression und mehr Funktionen als GIF, Animation, die einzige bedeutende Ausnahme. PNG besser geeignet als GIF in Fällen, in denen Echtfarbbildverarbeitung und Alpha-Transparenz erforderlich sind.

Obwohl die Unterstützung für PNG-Format kam langsam, neue Web-Browser in der Regel unterstützen PNG. Ältere Versionen von Internet Explorer unterstützen nicht alle Features von PNG. Version 6 und früher keine Alpha-Kanal Transparenz unterstützen, ohne Verwendung von Microsoft-spezifischen HTML-Erweiterungen. Gamma-Korrektur von PNG-Bildern nicht vor Version 8 unterstützt wird, und die Anzeige dieser Bilder in früheren Versionen kann der falschen Farbton haben.

PNG-Dateien kann viel größer als GIF-Dateien in Situationen, in denen ein GIF und PNG-Datei wurden aus dem gleichen hochwertigen Bildquelle erzeugt werden, als PNG speichern kann mehr Farbtiefe und Transparenz Informationen als GIF. Doch für identische 8-Bit-Bilddaten, sind png-Dateien in der Regel kleiner als die entsprechenden GIFs, aufgrund der effizienteren Kompressionstechniken im PNG-Codierung verwendet. Vollständige Unterstützung für das GIF-Format wird vor allem durch die komplexe Leinenstruktur erlaubt es kompliziert, aber das ist, was ermöglicht, dass die kompakte Animationsfunktionen.

Animationsformate

MNG wurde ursprünglich als PNG-basierte Lösung für Animationen entwickelt. MNG erreicht Version 1.0 im Jahr 2001, aber nur wenige Anwendungen unterstützen.

Im Jahr 2006 wurde eine Erweiterung des PNG-Format namens APNG als Alternative zu dem MNG-Format von Mozilla vorgeschlagen. APNG bieten die Möglichkeit, PNG-Dateien zu animieren, unter Beibehaltung der Abwärtskompatibilität in Decoder, die die Animation chunk nicht verstehen. Älteren Decoder einfach machen das erste Bild der Animation. Das PNG-Gruppe offiziell abgelehnt APNG als offizielle Erweiterung am 20. April 2007. Es wurden mehrere nachfolgende Vorschläge für ein einfaches animiertes Grafikformat auf Basis von PNG unter Verwendung mehrerer verschiedener Ansätze. Nichtsdestotrotz ist Animated Portable Network Graphics noch in der Entwicklung von Mozilla und ist in Firefox 3 unterstützt, während MNG Support wurde fallengelassen.

Eingebettete Flash-Objekte und MPEGs werden auf einigen Webseiten verwendet werden, um einfache Video anzuzeigen, sondern erfordern den Einsatz eines zusätzlichen Browser-Plugin. WebM und WebP sind in der Entwicklung und werden von einigen Web-Browsern unterstützt. Weitere Optionen für Web-Animationen gehören dien einzelnen Frames mit AJAX oder animieren SVG-Bildern mit Hilfe von JavaScript oder SMIL.

(0)
(0)
Kommentare - 0
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha