GIF

Aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation , Suche
GIF
Rotierende Erde (groß) .gif
Eine rotierende Kugel im GIF-Format.
Dateinamenerweiterung .gif
Internet-Medientyp image/gif
Typenschlüssel
GIFF
Uniform Type Identifier (UTI) com.compuserve.gif
magische Zahl GIF87a/GIF89a
Entwickelt von CompuServe
Erstveröffentlichung 1987 ; Vor 30 Jahren [1] ( 1987 )
Neueste Erscheinung
89a
(1989 ; vor 28 Jahren [2] ) ( 1989 )
Formattyp lossless Bitmap - Bildformat ,
Webseite www .w3 .org / Grafik / GIF / spec-gif89a .txt

Das Graphics Interchange Format (besser unter dem Akronym bekannt GIF / ɪ f / JIF oder / ɡ ɪ f / GHIF ) ist ein Bitmap - Bildformat , das von US-basierter Software Schriftsteller entwickelt wurde Steve Wilhite während am Bulletin Board - Dienst arbeiten (BBS) Anbieter CompuServe am 15. Juni 1987 [1] und hat sich seitdem kommen in weit verbreitete Verwendung auf dem World Wide Web durch seine breite Unterstützung und Portabilität.

Das Format unterstützt bis zu 8 Bit pro Pixel für jedes Bild, so dass ein einziges Bild seiner eigene Palette von bis zu 256 verschiedenen Farben aus dem ausgewählten referenzieren 24-Bit - RGB - Farbraum. Es unterstützt auch Animationen und ermöglicht eine separate Palette von bis zu 256 Farben für jeden Rahmen. Diese Palette Einschränkungen machen das GIF - Format weniger geeignet für die Wiedergabe von Farbfotos und andere Bildern mit kontinuierlicher Farbe, aber es ist gut geeignet für einfachere Bilder wie Grafiken oder Logos mit Farbflächen.

GIF - Bilder werden komprimiert , um die Verwendung von Lempel-Ziv-Welche (LZW) lossless Datenkompressionstechnik , die Dateigröße zu reduzieren , ohne die Bildqualität zu verschlechtern. Diese Kompressionstechnik im Jahr 1985 Streit um die Lizenzvereinbarung zwischen dem patentierten Software - Patent - Inhaber, Unisys und CompuServe 1994 spornte die Entwicklung des Portable Network Graphics (PNG) Standard. Bis zum Jahr 2004 alle relevanten Patente abgelaufen war.

Geschichte [ Bearbeiten ]

CompuServe eingeführt , um das GIF - Format am 15. Juni 1987 ein Farbbild - Format für ihre Datei herunterzuladen Bereiche zu schaffen, ihr frühere ersetzen Lauflängencodierung (RLE) Format, das nur schwarz und weiß war. GIF wurde populär , weil es verwendet LZW - Datenkompression , die effizienter als die Lauflängencodierung war , die wie Formate PCX und MacPaint verwendet, und ziemlich große Bilder daher in relativ kurzer Zeit heruntergeladen werden konnte, auch bei sehr langsamen Modems .

Die ursprüngliche Version des GIF - Format wurde genannt 87a . [1] Im Jahr 1989 CompuServe eine erweiterte Version veröffentlicht, die so genannten 89a , [2] , die Unterstützung für die Animation Verzögerungen (mehr Bilder in einem Strom bereits in 87a unterstützt wurden) hinzugefügt, transparente Hintergrundfarben, und die Speicherung von anwendungsspezifischen Metadaten. Die 89a - Spezifikation unterstützt auch Textbeschriftungen als Text enthält (nicht sie in den grafischen Dateneinbettungs), aber da es nur wenig Kontrolle über Display - Schriften ist, ist diese Funktion nicht weit verbreitet. Die beiden Versionen können durch einen Blick auf den ersten sechs unterscheiden Bytes der Datei (die „ magische Zahl “ oder „Signatur“), die, wenn sie als interpretiert ASCII „GIF87a“ und „GIF89a“ bzw. lesen.

CompuServe ermutigt die Annahme von GIF durch herunterladbare Konvertierungstools für viele Computer bereitstellt. Im Dezember 1987 zum Beispiel eines Apple Iigs könnten Benutzer Bilder auf einer erstellten Ansicht Atari ST oder Commodore 64 . [3] GIF war einer der ersten beiden Bildformate häufig auf Websites verwendet, die andere ist die schwarz-weiß XBM . [4]

Im September 1995 Netscape Navigator 2.0 hinzugefügt die Möglichkeit , animierte GIFs zu Schleife .

Die Funktion zum Speichern mehrerer Bilder in einer Datei , die von Steuerdaten begleitet wird, verwendet einfach ausführlich im Web zu produzieren Animationen . Die optionale Interlacing - Funktion, die in der falschen Reihenfolge in einer solchen Art und Weise , dass selbst eine teilweise heruntergeladene Bild etwas zu erkennen war, half auch GIF Popularität, Bildabtastlinien speichert [5] als Benutzer könnte brechen Sie den Download , wenn es nicht das war , was erforderlich war.

Im Mai 2015 Facebook hinzugefügt GIF - Unterstützung, obwohl sie ursprünglich nicht , sie auf ihrer Website unterstützt haben. [6] [7]

Sprachliche Merkmale [ Bearbeiten ]

Als Substantiv , das Wort GIF wird in den neueren Ausgaben vieler Wörterbücher gefunden. Im Jahr 2012, der amerikanische Flügel der Oxford University Press anerkannt GIF als Verb als auch, was „eine GIF - Datei erstellen“, wie in „GIFing war perfektes Medium für Szenen aus den Austausch von Olympischen Sommerspielen “. Die Lexikographen Presse stimmten sie ihr Wort des Jahres , sagen , dass GIFs in „ein Werkzeug mit schweren Anwendungen , einschließlich Forschung und Journalismus“ entwickelt haben. [8] [9]

Aussprache von GIF [ Bearbeiten ]

Eine humorvolle Bild , die Einführung einer Ankündigung des Weißen Hauses Tumblr schlägt GIF mit dem harten „G“ Sound Aussprechen.

Die Schöpfer des Formats sprachen das Wort als „jif“ mit einem weichen „G/ ɪ f / wie in „Gin“. Steve Wilhite sagt , dass die beabsichtigte Aussprache des amerikanische Erdnussbutter Marke bewusst Echos Jif und CompuServe Mitarbeiter würden oft sagen : „Choosy Entwickler GIF wählen“, Spoofing dieser TV - Werbespots der Marke. [10] Das Wort ist nun auch mit einem breit ausgesprochen hart „G“ / ɡ ɪ f / als „Geschenk“. [11]

Das American Heritage Dictionary [12] zitiert sowohl "jif" als primäre Aussprache angibt, während Cambridge Dictionary of American English [13] nur die Hard- "G" Aussprache bietet. Merriam-Webster Collegiate Dictionary [14] und die OED [15] zitieren beiden Aussprachen, aber Platz "gif" in der Standardposition ( "\ gif, jif \"). Das New Oxford American Dictionary gab nur "jif" in seiner 2. Auflage [16] , aber es "jif, gif" in seiner 3. Auflage aktualisiert. [17]

Die Uneinigkeit über die Aussprache führte zu hitziger Internet Debatte. Anlässlich bei 2013 Lebenswerk ausgezeichnet empfangen Webby Award Zeremonie, Wilhite die Hart- „G“ Aussprache abgelehnt, [11] [18] [19] und seine Rede führte zu 17.000 Beiträge auf Twitter und 50 News - Artikel. [20] Das Weiße Haus [11] und TV - Sendungen Jeopardy! [19] auch in die Debatte während 2013 watete.

Usage [ Bearbeiten ]

  • GIF - Dateien sind für scharfkantige Linie der Technik (wie Logos) mit einer begrenzten Anzahl von Farben geeignet ist . Dies nutzt das verlustfreie Kompression des Formats, die mit gut definierten Kanten flache Bereiche einheitlicher Farbe begünstigt. [21]
  • GIFs kann zum Speichern von Low-Farbe verwendet werden Sprite Daten für Spiele. [22]
  • GIFs kann für kleine Animationen und niedrige Auflösung Filmclips verwendet werden. [22]

Dateiformat [ Bearbeiten ]

Konzeptionell beschreibt eine GIF-Datei, die einen grafischen feste Größe Bereich (die „logische screen“) besetzt, mit null oder mehr „Bildern“. Viele GIF-Dateien haben ein einziges 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 animierten GIF-Datei funktionieren, aber auch hier diese müssen nicht den gesamten logischen Bildschirm füllen.

GIF-Dateien beginnen mit einer festen Länge header ( „GIF87a“ oder „GIF89a“), der die Version, gefolgt von einer festen Länge Logical Bildschirm Descriptor die Größe und andere Eigenschaften des logischen Bildschirm. Der Bildschirm Descriptor kann auch das Vorhandensein und die Größe einer globalen Farbtabelle angegeben werden, die nächsten falls vorhanden folgt.

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

  • Ein Bild (eingeführt durch 0x2C, ein Komma ‚‘ )
  • Ein Erweiterungsblock (eingeführt von 0x21, ein Ausrufezeichen ‚!‘ )
  • Der Anhänger (ein einzelne Byte von Wert 0x3B, ein Semikolon ‚;‘ ), die das letzte Byte der Datei sein sollte.

Ein Bild beginnt mit einem Bild Descriptor mit fester Länge, die das Vorhandensein und die Größe einer Local Color Tabelle angeben (die nächsten falls vorhanden folgt). Die Bilddaten folgen: ein Byte, das die Bitbreite der uncodierten Symbole geben (die breiten mindestens 2 Bits sein muß, auch für zweifarbige Bilder), gefolgt von einer verketteten Liste von Unterblöcken, die LZW-kodierte Daten enthalten.

Erweiterungsblöcke (Blöcke, die „Erweitern“ die Definition 87a über einen Mechanismus bereits in der 87a spec definiert sind) bestehen aus dem Sentinel, ein zusätzliches Byte den Typ des Erweiterungs spezifiziert und eine verknüpfte Liste von Unterblöcken mit den Erweiterungsdaten. Erweiterungsblocks, die ein Bild (wie die Grafiksteuer Erweiterung, die die optionalen Verzögerungszeit-Animation und optional transparente Hintergrundfarbe spezifiziert) ändern muss unmittelbar voraus das Segment mit dem Bild, das sie sich beziehen.

Die verknüpften Listen, die von den Bilddaten und der Erweiterungsblöcke verwendet werden, bestehen aus Reihe von Unterblöcken, wobei jeder Teilblock beginnt mit einem Byte die Anzahl der nachfolgenden Datenbytes in dem Unterblock (1 bis 255) zu geben. Die Reihe von Unterblöcken wird durch einen leeren Unterblock (a 0 Byte) beendet.

Diese Struktur ermöglicht die Datei auch analysiert werden, wenn nicht alle Teile verstanden werden. Ein GIF markiert 87a kann Erweiterungsblöcke enthalten; die Absicht ist, dass ein Decoder die Datei ohne die abgedeckten Funktionen in Erweiterungen lesen und anzeigen kann es nicht verstehen.

Das vollständige Detail des Dateiformates ist in der GIF - Spezifikation abgedeckt. [2]

Palettes [ Bearbeiten ]

Ein Beispiel für ein GIF - Bild gespeichert mit einer websicheren Palette und gerastert die Verwendung von Floyd-Steinberg - Methode. Durch die reduzierte Anzahl von Farben im Bild, gibt es Probleme bei der Anzeige.

GIF ist palette-basiert: die in einem Bild verwendeten Farben (ein Rahmen) in der Datei ihre haben RGB in einer definierten Werte Palettentabelle , die bis zu 256 Einträge aufnehmen kann, und die Daten für das Bild , das durch die Indizes zu den Farben beziehen ( 0-255) in der Palettentabelle. Die Farbdefinitionen in der Palette können von einem Farbraum von Millionen von Farben (2 gezogen werden 24 Farbtöne, 8 Bits für jeden Primär), aber die maximale Anzahl der Farben ein Rahmen verwenden kann , ist 256. Diese Beschränkung angemessen schien , als GIF entwickelt wurde weil nur wenige Menschen die Hardware leisten konnten , um gleichzeitig mehr Farben darstellen. Einfache Grafiken, Zeichnungen, Cartoons, und Graustufen - Fotos der Regel benötigen weniger als 256 Farben.

Jeder Rahmen kann einen Index als „transparente Hintergrundfarbe“ bezeichnen: jeder Pixel zugewiesen dieser Index auf der Farbe des Pixels in der gleichen Position aus dem Hintergrund erfolgt, die von einem vorhergehenden Rahmen der Animation bestimmt wurden.

Viele Techniken, zusammenfassend als Dithering , wurden unter Verwendung von Pixeln von zwei oder mehr Farben , um eine breitere Palette von Farben mit einer kleinen Farbpalette zur Annäherung entwickeln in-zwischen den Farben zu nähern. Diese Techniken opfern räumliche Auflösung zu nähern tiefere Farbauflösung. Obwohl nicht Teil der GIF - Spezifikation, Dithering kann natürlich in Bildern verwendet werden anschließend als GIF - Bilder codiert. Dies ist oft nicht eine ideale Lösung für GIF - Bilder, da sowohl der Verlust der räumlichen Auflösung der Regel ein Bild auf dem Bildschirm verschwommen aussehen lässt, und weil die Dithering - Muster oft mit der Kompressibilität der Bilddaten stören, arbeiten gegen Hauptzweck des GIF.

In den frühen Tagen des grafischen Web - Browser [ wann? ] , Grafikkarten mit 8-Bit - Puffer (nur 256 Farben erlaubt) waren an der Tagesordnung , und es war ziemlich häufig GIF - Bilder mit dem machen websafe Palette . [ Nach wem? ] Damit wird sichergestellt , vorhersehbare Anzeige, aber begrenzt stark die Wahl der Farben. Bei 24-Bit - Farbe der Normpaletten wurde statt mit den optimalen Farben für einzelne Bilder bevölkert werden könnten.

Eine kleine Farbtabelle kann für kleine Bilder genügen, und hält die Farbtabelle klein erlaubt die Datei schneller heruntergeladen werden. Sowohl die 87a und 89a Spezifikationen erlauben Farbtabellen von 2 n Farben für jedes n von 1 bis 8. Die meisten Grafikanwendungen wird gelesen und die Anzeige von GIF - Bildern mit einem dieser Tischgrößen; aber einige nicht alle Größen unterstützen , wenn die Erstellung Bilder. Tabellen von 2, 16 und 256 Farben werden in großem Umfang unterstützt.

True Color [ Bearbeiten ]

Eine animierte GIF eine Technik darstellt, für mehr als die typische Grenze von 256 Farben

Obwohl das GIF - Format ist fast nie verwendet True Color Bilder ist es möglich , dies zu tun. [23] [24] Ein GIF - Bild können mehrere Bildblöcke umfassen, von denen jeder seine eigene Palette mit 256 Farben haben kann, und die Blöcke mit Ziegeln gedeckt werden kann um ein vollständiges Bild zu erstellen. Alternativ führte die GIF89a Spezifikation die Idee einer „transparent“ Farbe , wobei jeder Bildblock eine eigene Palette von 255 sichtbaren Farben plus einer transparenten Farbe enthalten kann. Durch Schichtung Bildblocks mit dem sichtbaren Teil jeder Schicht erzeugt werden zeigt durch die transparenten Teile der Schichten über ein vollständiges Bild kann.

Um ein Vollfarbbild als GIF zu machen, muss das Originalbild gebrochen werden in kleinere Regionen nicht mehr als 255 oder 256 verschiedene Farben aufweisen. Jeder dieser Bereiche wird dann gespeichert als separate Bildblock mit seinen eigenen lokalen Palette und wenn die Bildblöcke werden zusammen angezeigt (entweder durch Verfliesung oder durch Schichtung teilweise transparenten Bildblöcke) die komplette, Vollfarbbild erscheint. Zum Beispiel, um 16 Pixel ein Bild in Kacheln von 16 Brechen (256 Pixel insgesamt) stellt sicher , dass keine Ziegel mehr als die lokale Palette Grenze von 256 Farben haben, obwohl größere Fliesen verwendet werden können und ähnliche Farben verschmolzen in einem gewissen Verlust an Farbe führen Information. [23]

Da jeder Bildblock seine eigene lokale Farbtabelle benötigt, kann eine GIF - Datei viele Bildblöcke mit sehr groß sein, den Nutzen von Vollfarb - GIFs zu begrenzen. [24] Darüber hinaus sind nicht alle GIF - Rendering - Programme verarbeiten Fliesen- oder geschichteten Bilder richtig. Viele Rendering - Programme interpretieren Fliesen oder Schichten als Animationsframes und sie nacheinander angezeigt wird als endlose Animation [23] mit dem meisten Web - Browser automatisch den Rahmen mit einer Verzögerungszeit von 0,1 Sekunden der Anzeige oder mehr. [25] [26] [ bessere Quelle benötigt ]

Beispiel GIF - Datei [ Bearbeiten ]

Musterabbildung (vergrößert), Istmaß 3 Pixel breit mal 5 Hoch
Bytes D h bis 30C h im Beispiel eine Palette mit 256 Farben definieren.

Microsoft Paint spart ein kleines Schwarz-Weiß - Bild als die folgende GIF - Datei. Malen Sie nicht die optimale Nutzung des GIF - Format machen; aufgrund der unnötig großen Farbtabelle und Symbolbreite (eine vollständigen 256 Farben statt der verwendeten 2 zu speichern), ist dies GIF - Datei keine effiziente Darstellung des Bildes 15 Pixel (oben vergrößert dargestellt).

Obwohl der Graphiksteuererweiterungsblock 16 erklärt, Farbindex (hexadezimal 10) transparent zu sein, wird dieser Index nicht in dem Bild verwendet. Der einzige Farb Indizes in den Bilddaten erscheint, ist dezimal 40 und 255, das die globale Farbtabelle auf Schwarz abbildet und weiß ist.

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

Byte # hexadezimal Text oder
(Hex) Wert Bedeutung
0: 47 49 46
       38 39 61 GIF89a Kopf
                                Logische Bildschirm Descriptor
6: 03 00 3 - logische Bildschirmbreite in Pixel
8: 05 00 5 - logische Bildschirmhöhe in Pixel
A: F7 - GCT folgt für 256 Farben mit einer Auflösung von 3 x 8 Bits / primary; die untersten 3 Bits repräsentieren die Bittiefe minus 1, die höchste wahre Bit bedeutet, dass das GCT vorliegt
B: 00 0 - Hintergrundfarbe # 0
C: 00 - Standardpixelseitenverhältnis
                   RGB Global Color Table
D: 00 00 00 0 0 0 - Farbe # 0 schwarz
10: 80 00 00 128 0 0 - Farbe # 1
 ::
85: 00 00 00 0 0 0 - Farbe # 40 schwarz
 ::
30A: FF FF FF 255 255 255 - Farbe # 255 weiß
30D: 21 F9 Grafik-Steuerung Extension (Kommentarfelder vorangestellt dies in den meisten Dateien)
30F: April von 04 bis 04 Byte Daten GCE Folge
310: 01 - es ist eine transparente Hintergrundfarbe (Bit-Feld, das niedrigste Bit bedeutet Transparenz)
311: 00 00 - Verzögerung für die Animation in Hundertstelsekunden: nicht verwendet
313: 10 16 - Farbe # 16 ist transparent
314: 00 - Ende der GCE Block
315: 2C Abbilddeskriptor
316: 00 00 00 00 (0,0) - NW Eckposition des Bildes in logischem Bildschirm
31A: 03 00 05 00 (3,5) - Bildbreite und Höhe in Pixeln
31E: 00 - keine lokale Farbtabelle
31F: 08 8 Start des Bildes - LZW Mindestcodegröße
320: 0B 11 - 11 Bytes der LZW codierte Bilddaten folgen
321: 00 51 28 70 1B FC A0 C1 83 01 01
32C: 00 - Ende der Bilddaten,
32D: 3B GIF-Datei-Terminator

Bildcodierung [ Bearbeiten ]

Die Bildpixeldaten, horizontal von oben links abgetastet wird , werden von umgewandelt LZW - Codierung auf Codes, die dann in Bytes abgebildet in der Datei zu speichern. Die Pixelcodes typischerweise nicht übereinstimmen , die 8-Bit - Größe der Bytes, so werden die Codes in Bytes , die von einem „Little-Endian“ Schema verpackt: das niedrigstwertige Bit des ersten Codes ist in dem am wenigsten signifikanten Bit der gespeicherten ersten Bytes, Bits höherer Ordnung des Codes in die höherwertigen Bits des Bytes, in die niederwertigen Bits des nächsten Bytes über~~POS=TRUNC nach Bedarf. Jeder nachfolgender Code wird an dem am wenigsten signifikanten Bit gespeichert Ausgänge nicht bereits verwendet wird .

Dieser Byte-Stream wird in der Datei als eine Reihe von „Unterblöcke“ gespeichert. Jeder Unterblock hat eine maximale Länge von 255 Byte und wird mit einem Byte, die die Anzahl von Datenbytes in dem Unterblock vorangestellt. Die Reihe von Unterblöcken wird durch einen leeren Unterblock (ein einzigen 0 Byte, was einen Unterblock mit 0 Datenbytes) beendet.

Für das Beispielbild über der reversible Zuordnung zwischen 9-Bit-Codes und Bytes ist unten gezeigt.

9-Bit - Code
(hex)
Binär Bytes
(hex)
00000000 00
100
0101000 | 1 51
028
111111 | 00 FC
0FF
00011 | 011 1B
103
0010 | 1000 28
102
011 | 10000 70
103
10 | 100000 A0
106
1 | 1000001 C1
107
10000011 83
00000001 01
101
0000000 | 1 01

Eine geringe Kompression ist evident: Pixelfarben definiert zunächst von 15 Bytes werden exakt durch 12 Bytes einschließlich der Codesteuercodes dargestellt. Das Codierungsverfahren, das die 9-Bit-Codes erzeugt, wird unten gezeigt. Eine lokale Zeichenfolge sammelt Pixelfarbnummern aus der Palette, ohne Ausgabeaktion, solange der lokale String kann in einer Code-Tabelle. Es ist eine besondere Behandlung der ersten beiden Punkte, die ankommen, bevor die Tabelle durch Zusätze von Strings aus seiner ursprünglichen Größe wächst. Nach jedem Ausgangscode wird die lokale Zeichenfolge auf die neueste Pixelfarbe initialisiert (dh nicht in dem Ausgangscode aufgenommen werden könnte).

                          Tabelle 9-bit
                     string -> Code Code Aktion
                          # 0 | 000h Initialize Wurzeltabelle von 9-Bit-Codes
                    Palette | :
                     Farben | :
                        # 255 | 0FFh
                         clr | 100h
                         Ende | 101h
                             | 100h löschen
Pixel Lokal |
Farbpalette string |
BLACK # 40 28 | 028h 1. Pixel immer zur Ausgabe
WHITE # 255 FF | String in der Tabelle gefunden
                  28 FF | 102h Immer erste String-Tabelle hinzufügen
               FF | Initialisieren lokalen Zeichenfolge
WHITE # 255 FF FF | String nicht in der Tabelle gefunden
                             | 0FFh - Ausgangscode für vorherige Zeichenfolge
                  FF FF | 103h - füge neueste String-Tabelle
               FF | - initialisieren lokalen Zeichenfolge
WHITE # 255 FF FF | String in der Tabelle gefunden
BLACK # 40 FF FF 28 | String nicht in der Tabelle gefunden
                             | 103h - Ausgangscode für vorherige Zeichenfolge
                  FF FF 28 | 104h - füge neueste String-Tabelle
               28 | - initialisieren lokalen Zeichenfolge
WHITE # 255 28 FF | String in der Tabelle gefunden
WHITE # 255 28 FF FF | String nicht in der Tabelle gefunden
                             | 102h - Ausgangscode für vorherige Zeichenfolge
                  28 FF FF | 105h - füge neueste String-Tabelle
               FF | - initialisieren lokalen Zeichenfolge
WHITE # 255 FF FF | String in der Tabelle gefunden
WHITE # 255 FF FF FF | String nicht in der Tabelle gefunden
                             | 103h - Ausgangscode für vorherige Zeichenfolge
                  FF FF FF | 106h - füge neueste String-Tabelle
               FF | - initialisieren lokalen Zeichenfolge
WHITE # 255 FF FF | String in der Tabelle gefunden
WHITE # 255 FF FF FF | String in der Tabelle gefunden
WHITE # 255 FF FF FF FF | String nicht in der Tabelle gefunden
                             | 106h - Ausgangscode für vorherige Zeichenfolge
                  FF FF FF FF | 107h - füge neueste String-Tabelle
               FF | - initialisieren lokalen Zeichenfolge
WHITE # 255 FF FF | String in der Tabelle gefunden
WHITE # 255 FF FF FF | String in der Tabelle gefunden
WHITE # 255 FF FF FF FF | String in der Tabelle gefunden
                                                   Keine mehr Pixel
                                          107h - Ausgangscode für letzte Zeichenfolge
                                          101h End

Aus Gründen der Klarheit wird die Tabelle oben gezeigt als von Strings von zunehmender Länge gebaut. Diese Regelung kann funktionieren, aber der Tisch verbraucht eine unberechenbare Größe des Speichers. Der Speicher kann in der Praxis gesichert werden, indem darauf hingewiesen, dass jede neue Zeichenfolge gespeichert wird, besteht aus einem zuvor gespeicherten Zeichenfolge um ein Zeichen erweitert. Es ist wirtschaftlich nur zwei Worte an jeder Adresse zu speichern: eine vorhandene Adresse und ein Zeichen.

Der LZW - Algorithmus erfordert eine Durchsuchung der Tabelle für jedes Pixel. Eine lineare Suche durch bis zu 4096 Adressen würde die Codierung langsam machen. In der Praxis können die Codes in der Reihenfolge des Zahlenwertes gespeichert werden; Dies ermöglicht , dass jede Suche nach einem SAR - Wert durchgeführt werden ( mit sukzessiver Approximation Register, wie in einigem verwendet ADCs ), mit nur 12 Größenvergleichen. Für diese Effizienz ist eine zusätzliche Tabelle zwischen den Codes und den tatsächlichen Speicheradressen zu konvertieren benötigt; der zusätzliche Tabelle auf Erhalt benötigt wird , wenn nur ein neuer Code gespeichert ist, die als Pixelrate bei viel weniger passiert.

Bilddekodierungs [ Bearbeiten ]

Dekodierung beginnt, indem die gespeicherten Bytes Abbilden Zurück zu 9-Bit-Codes. Diese werden decodiert, um die Pixelfarben zu erholen, wie unten gezeigt. Eine Tabelle identisch mit dem im Codierer verwendet durch Zugabe von Strings von dieser Regel gebaut wird:

Ist eingehender Code in der Tabelle gefunden?
 JA: add-String für lokalen Code, gefolgt von ersten Byte-String für eingehenden Code
 NO: add Zeichenfolge für lokalen Code gefolgt von Kopie seiner eigenen ersten Byte
      Verschiebung
9-Bit ----> Lokale Tabelle Pixel
Code Code Code -> string Palette Farbe Aktion
100h 000h | # 0 Initialize Wurzeltabelle von 9-Bit-Codes
                    : | Palette
                    : | Farben
                   0FFh | # 255
                   100h | clr
                   101h | Ende
028h | # 40 BLACK Decode erste Pixel
0FFh 028h | Ankommende Code in der Tabelle gefunden
                         | # 255 WHITE - Ausgabe-String aus der Tabelle
                   102h | 28 FF - in dem Tisch
103h 0FFh | Eingehende Code nicht in der Tabelle gefunden
                   103h | FF FF - in dem Tisch
                         | - Ausgabe-String aus der Tabelle
                         | # 255 WHITE
                         | # 255 WHITE
102h 103h | Ankommende Code in der Tabelle gefunden
                         | - Ausgabe-String aus der Tabelle
                         | # 40 BLACK
                         | # 255 WHITE
                   104h | FF FF 28 - in dem Tisch
103h 102h | Ankommende Code in der Tabelle gefunden
                         | - Ausgabe-String aus der Tabelle
                         | # 255 WHITE
                         | # 255 WHITE
                   105h | 28 FF FF - in dem Tisch
106h 103h | Eingehende Code nicht in der Tabelle gefunden
                   106h | FF FF FF - in dem Tisch
                         | - Ausgabe-String aus der Tabelle
                         | # 255 WHITE
                         | # 255 WHITE
                         | # 255 WHITE
107h 106h | Eingehende Code nicht in der Tabelle gefunden
                   107h | FF FF FF FF - in dem Tisch
                         | - Ausgabe-String aus der Tabelle
                         | # 255 WHITE
                         | # 255 WHITE
                         | # 255 WHITE
                         | # 255 WHITE
101h | Ende

LZW Codelängen [ Bearbeiten ]

Kürzere Codelängen können für Paletten kleiner als die 256 Farben in dem Beispiel verwendet werden. Wenn die Palette nur 64 Farben (Farb so Indizes sind 6 Bits breit), kann die Symbole von 0 bis 63 reichen, und die Symbolbreite getroffen werden können 6 Bits sein, mit den Codes auf 7 Bits beginnen. In der Tat muß die Symbolbreite die Palettengröße nicht überein: solange die decodierten Werte sind immer kleiner als die Anzahl der Farben in der Palette können die Symbole von 2 bis 8 jede Breite sein, und der Palettengröße jede Potenz von 2 von 2 bis 256. wenn beispielsweise nur die ersten vier Farben (die Werte 0 bis 3) der Palette verwendet werden, können die Symbole 2 Bits breit mit Codes auf 3 Bits beginnend seine genommen werden.

Umgekehrt könnte die Symbolbreite auf 8 eingestellt werden, wenn auch nur Werte 0 und 1 verwendet werden; Diese Daten würden nur eine 2-Farben-Tabelle erforderlich. Obwohl es würde bei der Codierung der Datei, die Art und Weise kein Sinn, etwas Ähnliches geschieht in der Regel für zweifarbige Bilder: die minimale Symbolbreite 2 ist, wenn auch nur Werte 0 und 1 verwendet werden.

Die Codetabelle enthält anfänglich Codes , die ein Bit länger als die Symbolgröße , um die zwei spezielle Codes aufzunehmen clr und Ende und Codes für die Zeichenfolgen , die während des Verfahrens zugegeben werden. Wenn die Tabelle die Codelänge erhöht sich voll ist Platz für mehr Saiten geben, bis zu einem maximalen Code 4095 = FFF (hex). Da der Dekoder seine Tabelle baut sie verfolgt diese Erhöhungen der Codelänge , und es ist in der Lage ankommendes Bytes entsprechend entpacken.

Unkomprimiert GIF [ Bearbeiten ]

Ein 46 x 46 unkomprimierter GIF mit 7-Bit-Symbolen (128 Farben, 8-Bit-Codes). Klicken Sie auf das Bild für eine Erklärung des Codes.

Die GIF Codierprozeß kann modifiziert werden, um eine Datei ohne LZW-Kompression zu schaffen, die noch sichtbar als GIF-Bild ist. Diese Technik wurde als ein Weg eingeführt ursprünglich Patentverletzung zu vermeiden. Unkomprimiert GIF kann auch ein nützliches Zwischenformat für eine Grafikprogrammierer sein, weil einzelne Pixel zugänglich für das Lesen oder Malen sind. Eine unkomprimierte GIF-Datei kann, indem es durch ein Bildbearbeitungsprogramm einfach auf eine gewöhnliche GIF-Datei umgewandelt werden.

Das modifizierte Codierungsverfahren ignoriert die LZW Tabelle Aufbau und gibt nur die Wurzel Palette Codes und die Codes für CLEAR und zu stoppen. Dies ergibt eine einfachere Codierung (eine 1-zu-1-Entsprechung zwischen den Codewerten und Palettencodes), sondern Opfern der Kompressions alle: jedes Pixel in dem Bild erzeugt einen Ausgangscode anzeigt, dessen Farbindex. Wenn ein unkomprimierte GIF Verarbeitung wird ein Standard-GIF-Decoder nicht vom Schreiben Saite seiner Wörterbuch Tabelle verhindert werden, aber die Codebreite muss wachsen nie da, dass eine andere Verpackung von Bits zu Bytes auslöst.

Wenn die Symbolbreite n ist , natürlich die Codes der Breite n + 1 fällt in zwei Blöcke: der untere Block von 2 n - Codes für einzelne Symbole Codierung und der obere Block von 2 n - Codes , die durch den Decodierer für Sequenzen verwendet werden , werden von Länge , die größer als eins ist . Von diesem oberen Block sind die ersten beiden Codes bereits vergeben: 2 n für klare und 2 n + 1 für STOPP. Der Decoder muß auch von der Verwendung des letzten Code in dem oberen Block verhindert werden, 2 n + 1 - 1 in denn wenn der Decoder, den Schlitz füllt, wird die Codebreite erhöhen. So ist in dem oberen Block gibt es 2 n - 3 - Codes zur Verfügung zu dem Decodierer , die nicht eine Zunahme der Codebreite auslöst. Da der Decodierer hinter immer ein Schritt ist , den Tisch in die Aufrechterhaltung, macht es keinen Tabelleneintrag nach dem Empfangen des ersten Code vom Codierer erzeugen, wird jedoch eine für jeden nachfolgenden Code generieren. Somit kann der Codierer erzeugt 2 n - 2 - Codes ohne eine Erhöhung der Codebreite ausgelöst wird . Daher muss der Geber emittieren zusätzliche CLEAR - Codes in Intervallen von 2 n - 2 - Codes oder weniger der Decoder die Codierung Wörterbuch zurückgesetzt zu machen. Die GIF - Standard ermöglicht eine solche zusätzliche CLEAR - Codes zu jedem Zeitpunkt in den Bilddaten eingefügt werden. Der zusammengesetzte Datenstrom wird in Unterblöcke unterteilt , die jeweils von 1 bis 255 Bytes tragen.

Für die Probe 3x5 Bild oben die folgenden 9-Bit-Codes repräsentieren "clear" (100), gefolgt von Bildpixeln in Scan-Reihenfolge und "Stop" (101).

9-Bit-Codes: 100 028 0FF 0FF 0FF 028 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 0FF 101

Nachdem die obigen Codes Bytes zugeordnet sind, unterscheidet sich die unkomprimierte Datei aus der komprimierten Datei so:

 :
320: 14 20 20 Bytes unkomprimierte Bilddaten folgen
321: 00 51 FC FB F7 0F C5 BF 7F FF FE FD FB F7 EF DF BF 7F 01 01
335: 00 - Ende
 :

Compression Beispiel [ Bearbeiten ]

Das triviale Beispiel für ein großes Bild von fester Farbe zeigt die mit variabler Länge LZW-Komprimierung in GIF-Dateien verwendet.

Code Pixel Notizen
No.
N i
Wert
N i + 256
Länge
(Bits)
Dieser Code
N i
Kumulierte
N I (N I Tasu 1) / 2
Beziehungen N mit i gelten nur für gleichgeschlechtlichen
Farbpixel , bis Tabelle Codierung voll ist.
0 100h 9 Klare Codetabelle
1 FFh 1 1 Oben links Pixelfarbe als der gewählte
höchste Index einer 256-Farben - Palette
2 102h 2 3
3

255
103h

1FFh
3

255
6

32640


Last 9-Bit-Code
256

767
200h

3FFh
10 256

767
32896

294528


Die letzte 10-Bit-Code
768

1791
400h

7FFh
11 768

1791
295.296

1604736


Letzter 11-Bit-Code
1792

3839
800h

FFFh
12 1792

3839
1606528

7370880


Code-Tabelle voll
FFFh 3839 Der maximale Code kann für mehr gleichfarbige Pixel wiederholen.
Gesamtdatenkompression asymptotisch
3839 × 8/12 = 2559 1/3
101h Ende der Bilddaten

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

Interlacing [ Bearbeiten ]

Die GIF-Spezifikation ermöglicht es jedes Bild innerhalb des logischen Bildschirm einer GIF-Datei angeben, dass es interlaced ist; das heißt, dass die Reihenfolge der Rasterlinien in seinem Datenblock ist nicht sequentiell. Dies ermöglicht eine Teilanzeige des Bildes, das vor dem Vollbild erkannt werden kann gemalt.

Ein verschachteltes Bild ist, von oben nach unten in Streifen 8 Pixel hoch geteilt, und die Zeilen des Bildes sind in der folgenden Reihenfolge dargestellt:

  • Durchgang 1: Zeile 0 (die oberste Linie) von jedem Streifen.
  • Durchlauf 2: Zeile 4 von jedem Streifen.
  • Pass 3: Die Linien 2 und 6 von jedem Streifen.
  • Pass 4: Die Linien 1, 3, 5 und 7 von jedem Streifen.

Die Pixel innerhalb jeder Zeile sind nicht verschachtelt, sondern hintereinander dargestellt von links nach rechts. Wie bei der nicht-interlaced Bildern gibt es keine Pause zwischen den Daten für eine Zeile und die Daten für die nächsten. Der Indikator, der ein Bild interlaced ist, ist ein Bit gesetzt in dem Header-Block des Bildes.

Animierte GIF [ Bearbeiten ]

Das GIF - Format kann verwendet werden , Animation angezeigt werden , wie in diesem Bild von Newtons Cradle .
Eine GIF-Animation von zwei Fotos gemacht, einer in die anderen Morphing
Eine Animation einer Öltiefpumpe durch Looping Teil eines Video gemacht

Basisanimation wurde über die Grafiksteuerung Extension (GCE), zu dem GIF89a spec hinzugefügt , die verschiedene Bilder (Frames) in der Datei kann mit Zeitverzögerungen zu lackierenden, eine Formvideoclip . Eine animierte GIF - Datei besteht aus einer Anzahl von Rahmen , die nacheinander angezeigt werden, die jeweils von einem eigenen GCE eingeführt, die die Zeitverzögerung gibt , zu warten , nachdem der Rahmen gezogen wird. Globale Informationen zu Beginn der Datei gilt standardmäßig für alle Frames. Der Datenstrom wird orientiert, so dass die Datei-Versatz von dem Beginn jeden GCE hängt von der Länge der Daten vorausgeht. In jedem Rahmen der LZW-codierten Bilddaten werden in Unterblöcke von bis zu 255 Bytes angeordnet sind ; die Größe jedes Unterblocks wird durch das Byte deklariert dass es vorangeht.

Standardmäßig zeigt jedoch eine Animation die Folge von Frames nur einmal, zu stoppen , wenn der letzte Frame angezeigt wird. Da GIF ausgelegt ist , damit die Benutzer neue Blöcke definieren, Netscape in den 1990er Jahren verwendet , um den Application Extension Block (intended Anbieter zu ermöglichen , anwendungsspezifische Informationen an die GIF - Datei hinzufügen) , um den Netscape Application Block (NAB) zu implementieren. [27] Dieser Block platziert unmittelbar vor allen Animationsrahmen, gibt die Anzahl der Male , die Folge von Vollbildern wiedergegeben werden soll. (Der Wert 0 bedeutet Daueranzeige.) Die Unterstützung für diese Wiederholung Animationen erschien zuerst in Netscape Navigator Version 2.0, und verteilte dann zu anderen Browsern. [28] jetzt Die meisten Browser erkennen und NAB unterstützen, auch wenn es nicht unbedingt Teil der GIF89a - Spezifikation ist.

Das folgende Beispiel zeigt die Struktur der Animationsdatei Rotierende Erde (large) GIF- gezeigt (als Thumbnail) an der Oberseite des Artikels.

Byte # hexadezimal Text oder
(Hex) Wert Bedeutung
0: 47 49 46
       38 39 61 GIF89a Kopf
                              Logische Bildschirm Descriptor
6: 90 01 400 - Breite in Pixel
8: 90 01 400 - Höhe in Pixeln
A: F7 - GCT folgt für 256 Farben mit einer Auflösung von 3 x 8 Bit / primary
B: 00 0 - Hintergrundfarbe # 0
C: 00 - Standardpixelseitenverhältnis
D: Global Color Table
:
30D: 21 FF Anwendungserweiterungsblock
30F: 0B 11 - elf Bytes Daten folgen
310: 4E 45 54
       53 43 41
       50 45 NETSCAPE - 8-Zeichen-Anwendungsnamen
       32 2E 30 2.0 - Anwendung "authentication code"
31B: 03 3 - drei weitere Bytes von Daten
31C: 01 1 - Datenunterblockindex (immer 1)
31D: FF FF 65535 - unsigned Anzahl der Wiederholungen
31F: 00 - Ende des Erweiterungsblockes App
320: 21 F9 Grafiksteuer Erweiterung für Rahmen # 1
322: 04 4 - vier Bytes von Daten folgen
323: 08 - Bit-Felder 3x: 3: 1: 1, 000 | 010 | 0 | 0 -> Wiederherstellen Farbe bg
324: 09 00 bis 0,09 sec Verzögerung vor dem nächsten Rahmen Malerei
326: 00 - keine transparente Farbe
327: 00 - Ende der GCE Block
328: 2C Abbilddeskriptor
329: 00 00 00 00 (0,0) - NW-Ecke des Rahmens bei 0, 0
32D: 90 01 90 01 (400.400) - Frame Breite und Höhe: 400 x 400
331: 00 - keine lokale Farbtabelle; kein Interlace
332: 08 8 LZW min Codegröße
333: FF 255 bis 255 Bytes LZW codierten Bilddaten folgen
334: Daten
433: FF 255 bis 255 Bytes LZW codierten Bilddaten folgen
                    Daten
                     :
92BA: 00 - Ende der LZW-Daten für diesen Rahmen
92BB: 21 F9 Grafikbedienfeld-Erweiterung für den Rahmen # 2
 ::
153B7B: 21 F9 Grafiksteuer Erweiterung für Rahmen # 44
 :
15CF35: 3B Datei-Terminator

Die Animation Verzögerung für jeden Rahmen wird in der GCE in Hundertstelsekunden angegeben. Einige Wirtschaft von Daten ist möglich, wenn ein Rahmen nur einen Teil der Pixel des Displays neu schreiben müssen, weil das Bild Descriptor ein kleineres Rechteck anstelle des gesamten Bildes erneut gescannt definieren werden. Browser oder andere Displays, die animierte GIFs der Regel nicht unterstützen zeigen nur den ersten Frame.

Die Größe und Farbqualität von animierten GIF-Dateien können erheblich variieren je nach Anwendung verwendet, um sie zu erstellen. Strategien für die Dateigröße minimiert umfassen eine gemeinsame globale Farbtabelle für alle Rahmen (eher als eine vollständige lokale Farbtabelle für jeden Rahmen) verwendet, und die Minimierung der Anzahl von Pixeln in aufeinanderfolgenden Rahmen abgedeckt (so dass nur die Pixel, die von einem Rahmen, um die Änderung nächstes werden im letzteren Rahmen enthalten). Einfach Verpackung neigt dazu, eine Reihe von unabhängigen Frame-Bildern in eine zusammengesetzte Animation große Dateigrößen zu erhalten.

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

Ab Anfang 1995 hat die Universität Ulm verwendet animierte GIF als Live - Video - Streaming - Format ein steuerbares Modellbahn zu zeigen.

Unisys und LZW - Patent Durchsetzung [ Bearbeiten ]

Im Jahr 1977 und 1978, Jacob Ziv und Abraham Lempel veröffentlichten ein Paar Papiere auf eine neue Klasse von lossless Datenkomprimierungsalgorithmen, jetzt kollektiv als LZ77 und LZ78 . Im Jahr 1983, Terry Welch entwickelt eine schnelle Variante des LZ78 , die genannt wurde Lempel-Ziv-Welch (LZW). [30] [31]

Welche eine Patentanmeldung eingereicht für das LZW - Verfahren im Juni 1983. Das resultierende Patent US 4.558.302  , erteilte im Dezember 1985 wurde zugewiesen Sperry Corporation , die anschließend mit fusionierte Burroughs Corporation in den Jahren 1986 und gebildet Unisys . [30] Weitere Patente wurden in Großbritannien, Frankreich, Deutschland, Italien, Japan und Kanada erhalten.

Im Juni 1984 ein Artikel von Welch wurde in der veröffentlichten IEEE - Magazin, das die LZW - Technik zum ersten Mal öffentlich beschrieben. [32] LZW wurde zu einer beliebten Datenkompressionstechnik und, wenn das Patent erteilt wurde, trat Unisys in Lizenzvereinbarungen mit über hundert Unternehmen. [30] [33]

Die Popularität von LZW führte CompuServe es als die Kompressionstechnik für ihr GIF - Format zu wählen, im Jahr 1987. Zu der Zeit entwickelt wurde CompuServe des Patents nicht bekannt. [30] Unisys wurde bewusst , dass das GIF - Format der LZW - Komprimierungstechnik verwendet und trat in Lizenzverhandlungen mit CompuServe im Januar 1993. Die nachfolgende Vereinbarung am 24. Dezember 1994 bekannt gegeben wurde [31] Unisys stellte fest , dass sie alle wichtige kommerziellen erwartet on-line Informationsdienste Unternehmen die LZW - Patent unter Verwendung der Technologie von Unisys zu einem vernünftigen Preis zu lizenzieren, aber dass sie nicht die Lizenzierung oder Gebühren verlangen für nicht-kommerzielle, gemeinnützige GIF-basierten Anwendungen bezahlt, werden für die Verwendung einschließlich auf die online-Dienste. [33]

Nach dieser Ankündigung gab es weit verbreitete Verurteilung von CompuServe und Unisys, und viele Software - Entwickler drohte mit dem GIF - Format zu stoppen. Das PNG - Format (siehe unten) wurde 1995 als Ersatz gedacht entwickelt. [30] [31] [32] jedoch von den Machern von Web - Browsern und anderer Software für das PNG - Format zu erhalten Unterstützung erwies sich als schwierig , und es war nicht möglich , das GIF - Format zu ersetzen, obwohl PNG in der Popularität allmählich zugenommen hat. [30] Daher GIF Variationen ohne LZW - Komprimierung entwickelt wurden. Zum Beispiel kann die libungif Bibliothek basiert auf Eric S. Raymond ‚s giflib, ermöglicht die Erstellung von GIF - Dateien , die das Datenformat gefolgt , aber die Komprimierungsfunktionen vermieden, so dass die Verwendung des Unisys LZW - Patent zu vermeiden. [34] A 2001 Dr. Dobbs Artikel beschrieben eine weitere Alternative zu LZW - Kompression, basierend auf Quadratwurzeln. [35]

Im August 1999 änderte Unisys die Einzelheiten ihrer Genehmigungspraxis, die Möglichkeit für Besitzer von bestimmten nicht-kommerziellen und privaten Webseiten ankündigen Lizenzen gegen Zahlung einer einmalige Lizenzgebühr von $ 5000 oder $ 7500 zu erhalten. [36] Solche Lizenzen wurden nicht für Website - Besitzer oder andere GIF Benutzer erforderlich, die lizenzierte Software benutzt hatte , GIFs zu erzeugen. Dennoch wurde Unisys zu Tausenden von Online - Attacken und missbräuchlichen E - Mail von Benutzern ausgesetzt zu glauben , dass sie $ 5000 oder verklagt für die Verwendung von GIF - Dateien auf ihren Websites würde aufgeladen werden. [37] Trotz freie Lizenzen , um Hunderte von Nicht-Profit - Organisationen, Schulen und Regierungen gibt, war Unisys völlig unfähig , jede gute Werbung zu generieren und weiterhin von Einzelpersonen und Organisationen wie die verurteilt wird League for Programming Freedom , die das „Burn All gestartet GIFs“Kampagne im Jahr 1999. [38] [39]

Das Vereinigten Staaten LZW - Patent am 20. Juni 2003 abgelaufen [40] Die Gegen Patente im Vereinigten Königreich, Frankreich, Deutschland und Italien am 18. Juni 2004 abgelaufen ist , die japanischen Patente am 20. Juni 2004 endeten, und das kanadische Patent abgelaufen am 7. Juli 2004 [40] Folglich während Unisys weitere Patente und Patentanmeldungen in Bezug auf Verbesserungen die LZW - Technik hat, [40] das GIF - Format nun frei verwendet werden kann. [41]

Alternativen [ Bearbeiten ]

PNG [ Bearbeiten ]

Portable Network Graphics (PNG) wurde als Ersatz für das GIF - Format entwickelt , um einen Verstoß gegen Unisys Patent auf der LZW - Kompressionstechnik zu vermeiden. [30] PNG bietet eine bessere Kompression und mehr Funktionen als GIF, [42] Animation die einzige bedeutende Ausnahme. PNG ist besser geeignet als GIF in Fällen , in denen farbgetreue Abbildung und Alpha - Transparenz erforderlich sind.

Obwohl die Unterstützung für PNG - Format kam langsam, neuer Web - Browser generell PNG unterstützen. Ältere Versionen von Internet Explorer unterstützen nicht alle Funktionen von PNG. Versionen 6 und frühere Versionen nicht unterstützen Alpha - Kanal Transparenz ohne Verwendung von Microsoft-spezifischen HTML - Erweiterungen. [43] Gamma - Korrektur von PNG - Bildern wurde nicht vor der Version 8 unterstützt wird , und die Anzeige dieser Bilder in früheren Versionen kann die falsche Farbton hat. [44]

PNG - Dateien können viel größer als GIF - Dateien in Situationen, in denen ein GIF und PNG - Datei aus der gleichen hochwertigen Bildquelle erstellt wurden, als PNG ist in der Lage mehr Farbtiefe und Transparenz Informationen als GIF speichern. Jedoch für identische 8-Bit (oder niedriger) Bilddaten sind PNG - Dateien typischerweise kleiner als die entsprechende GIFs aufgrund der effizienteren Kompressionstechniken in PNG - Codierung verwendet. [45] Die vollständige Unterstützung für das GIF - Format wird hauptsächlich durch die komplexe Leinwand Struktur kompliziert es erlaubt, obwohl dies ist es, was die kompakten Animationsfunktionen ermöglicht.

Animationsformate [ Bearbeiten ]

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 es.

Im Jahr 2006 rief eine Erweiterung des PNG - Format APNG wurde als Alternative zum MNG Format vorgeschlagen Mozilla . APNG bietet die Möglichkeit , PNG - Dateien zu animieren, während der Kompatibilität in Decoder Halt rückwärts , die nicht die Animation Brocken ( im Gegensatz zu MNG) verstehen. Ältere Decoder wird einfach das erste Bild der Animation machen. Die PNG - Gruppe abgelehnt offiziell APNG als offizielle Erweiterung am 20. April 2007. [46] Es wird mehr nachfolgenden Vorschläge Format für ein einfache animierte Grafiken basierend auf PNG verschiedene Ansätze. [47] Dennoch Animated Portable Network Graphics ist noch in der Entwicklung von Mozilla und wird in unterstützt Firefox 3 [48] [49] , während MNG Unterstützung fallen gelassen wurde. [50] [51]

Eingebettete Adobe Flash - Objekte und MPEGs werden auf einigen Websites verwenden einfaches Video angezeigt werden , sondern erfordern den Einsatz einer zusätzlichen Browser - Plugin. WebM und WebP sind in der Entwicklung und wird von einigen Web - Browsern unterstützt. [52] Weitere Möglichkeiten für Web - Animation umfassen dienen einzelne Frames mit AJAX oder Animieren SVG Bilder mit JavaScript oder SMIL . [ Bearbeiten ]

Mit der Einführung der weit verbreiteten Unterstützung der HTML5 <video> - Tag in den meisten Web - Browser, verwenden einige Websites , die ein Loop - Version des Video - Tag durch erzeugt JavaScript - Funktionen. Dies gibt das Aussehen eines GIF, aber mit der Größe und Geschwindigkeit Vorteile von komprimierten Videos. Bemerkenswerte Beispiele sind Gfycat und Imgur und ihre GIFV Metaformat, das ist wirklich ein Video - Tag ein geschlungen spielen MP4 oder WebM komprimiertes Video. [53]

Siehe auch [ Bearbeiten ]

Referenzen [ Bearbeiten ]

  1. ^ Nach oben springen zu: einem b c "Graphics Interchange Format, Version 87a" . W3C . 15. Juni 1987 . Abgerufen 13 Oktober 2012 . 
  2. ^ Nach oben springen zu: einem b c "Graphics Interchange Format, Version 89a" . W3C . 31. Juli 1990 . Abgerufen 6 März 2009 . 
  3. Aufspringen ^ „Online - Kunst“ . Compute! 'S Apple - Anwendungen . Dezember 1987 p. 10 . Abgerufen 14 September Jahr 2016 . 
  4. Aufspringen ^ Holdener III, Anthony (2008). Ajax: The Definitive Guide: Interaktive Anwendungen für das Web . O'Reilly Media. ISBN  0596528388 . 
  5. Aufspringen ^ Furht, Borko (2008). Encyclopedia of Multimedia . Springer. ISBN  0387747249 . 
  6. Aufspringen ^ McHugh, Molly (2015.05.29). „Sie können schließlich Eigentlich Wirklich, Wirklich Stellen GIFs auf Facebook“ . wired.com . Abgerufen 2015.05.29 . 
  7. Aufspringen ^ Perez, Sarah (2015.05.29). „Facebook bestätigt es offiziell GIFs Support“ . techcrunch.com . Abgerufen 2015.05.29 . 
  8. Aufspringen ^ „Oxford - Wörterbücher USA Wort des Jahres 2012“ . OxfordWords Blog . Oxford American Dictionaries. 2012.11.13 . Abgerufen 2013.05.01 . 
  9. Aufspringen ^ Flood, Alison (2013.04.27). Gif ist Amerikas Wort des Jahres? Nun , das ist , was ich eine omnishambles nennen“ . Bücher Blog . London: Guardian.co.uk . Abgerufen 2013.05.01 . 
  10. Aufspringen ^ Olsen, Steve. „Die GIF Aussprache Seite“ . Abgerufen 6 März 2009 . 
  11. ^ Nach oben springen zu: ein b c „Gif Erfinder sagt Wörterbücher ignorieren und sagen‚Jif . BBC News . 2013.05.22 . Abgerufen 2013.05.22 . 
  12. Aufspringen ^ "GIF" . Das American Heritage Dictionary Abkürzungen, Third Edition . Houghton Mifflin Company. 2005 . Abgerufen 2007-04-15 . 
  13. Aufspringen ^ "GIF" . Das Cambridge Dictionary of American English . Cambridge University Press . Abgerufen 2014.02.19 . 
  14. Aufspringen ^ "Gif - Definition aus dem Merriam-Webster Dictionary" . Merriam-Webster Dictionary . Merriam-Webster, Incorporated . Abgerufen 6 Juni 2013 . 
  15. Aufspringen ^ "GIF" . Oxford - Wörterbücher Online . Oxford University Press . Abgerufen 7 Oktober Jahr 2014 . 
  16. Aufspringen ^ The New Oxford American Dictionary (2. Aufl.). Oxford University Press. 2005 p. 711. 
  17. Aufspringen ^ The New Oxford American Dictionary (3. Aufl.). 2012 (Teil des Macintosh integrierten Wörterbücher).
  18. Aufspringen ^ O'Leary, Amy (21. Mai 2013). „Eine Ehre für den Schöpfer des GIF“ . New York Times . Abgerufen 22 May 2013 . 
  19. ^ Nach oben springen zu: ein b Rothberg, Daniel (4. Dezember 2013). Jeopardy‘watet in Aussprache Schlacht‚GIF‘“ . Los Angeles Times . Los Angeles Times . Abgerufen 2013.12.04 . 
  20. Aufspringen ^ O'Leary, Amy (23. Mai 2013). "Battle Over 'GIF' Aussprache Erupts" . Die New York Times . 
  21. Aufspringen ^ Marur, DR; Bhaskar, V. (März 2012). „Vergleich von plattformunabhängigen elektronischen Dokumentenverteilung Techniken“ . Geräte, Schaltungen und Systeme (CILSS) . Internationale Konferenz über Geräte, Schaltungen und Systeme (CILSS) . Karunya University; Coimbatore, Indien: IEEE. pp. 297-301. ISBN  9781457715457 . doi : 10,1109 / ICDCSyst.2012.6188724 . Abgerufen 2015.03.10 . 
  22. ^ Aufspringen: ein b S. Chin; D. Iverson; O. CAMPESATO; P. Trani (2011). Pro Android - Flash (PDF) . New York: Apress. Seite 350. ISBN  9781430232315 . Abgerufen 11 März zum Jahr 2015 . 
  23. ^ Aufspringen: ein b c Andreas Kleinert (2007). "GIF 24 Bit (True Color) Erweiterungen" . Archivierte aus dem Original am 16. März 2012 . Abgerufen 23 März 2012 . 
  24. ^ Nach oben springen zu: ein b Philip Howard. "Wahr-Color GIF Beispiel" . Archivierte aus dem Original am 22. Februar 2015 . Abgerufen 23 März 2012 . 
  25. Aufspringen ^ "Nullsleep - Jeremiah Johnson - Animierte GIF Minimum Frame - Verzögerung Browser - Kompatibilität Study" . Abgerufen 26 May zum Jahr 2015 . 
  26. Aufspringen ^ „Sie sind anders! Wie die Animation Rate von GIF - Dateien entsprechen accross [sic] Browser“ . Entwickler Blog . 14. Februar 2012 . Abgerufen 15 Juni Jahr 2017 . 
  27. Aufspringen ^ Königlichen Frazier. "All About GIF89a" . Abgerufen 7 Januar 2013 . 
  28. Aufspringen ^ Scott Walter (1996). Web Scripting Secret Weapons . Que Publishing . ISBN  0-7897-0947-3 . 
  29. Aufspringen ^ "MSDN Blogs" . Microsoft . Abgerufen 26 May zum Jahr 2015 . 
  30. ^ Aufspringen: ein b c d e f g Greg Roelofs. " Die Geschichte des Portable Network Graphics (PNG) Format" . Abgerufen 23 März 2012 . 
  31. ^ Aufspringen: ein b c Stuart Caie. "Sad Tag ... GIF - Patent tot bei 20" . Abgerufen 23 März 2012 . 
  32. ^ Nach oben springen zu: einer b „Die GIF - Kontroverse: Sicht des Software Developer“ . Abgerufen 26 May zum Jahr 2015 . 
  33. ^ Nach oben springen zu: ein b Unisys Richtlinien In Bezug auf Patent Präzisiert in On-Line Service - Angebote - archiviert durch League for Programming Freedom
  34. Aufspringen ^ "libungif" . Abgerufen 26 May zum Jahr 2015 . 
  35. Aufspringen ^ Cargill, Tom (2001-10-01). „Ersetzen einer Wörterbuch mit einem Square Root“ . Dr. Dobbs Journal . Abgerufen 2017.01.20 . 
  36. Aufspringen ^ „LZW Software und Patentinformation“ . Archivierte aus dem Original am 8. Juni 2009 . Abgerufen 2007-01-31 . - Klärung des 2. September 1999 
  37. Aufspringen ^ Unisys Nicht Suing (meisten) Webmaster fürVerwendungGIFs-SlashdotUntersuchung der Kontroverse
  38. Aufspringen ^ http://burnallgifs.org/Originalversion (archiviert im WebArchive im Jahr 1999)
  39. Aufspringen ^ Brennt alle GIFs- Ein Projekt der League for Programming Freedom (neueste Version)
  40. ^ Nach oben springen zu: einer b c „Lizenzinformation auf GIF und anderen LZW-basierte Technologien“ . Archivierte aus dem Original am 2. Juni 2009 . Abgerufen 2005-04-26 . 
  41. Aufspringen ^ „Warum keine GIF sich Dateien auf GNU Web Pages“ . Free Software Foundation . Abgerufen 19 May 2012 . 
  42. Aufspringen ^ „PNG im Vergleich zu GIF - Komprimierung“ . Abgerufen 8 Juni 2009 . 
  43. Aufspringen ^ „Alphaimageloader - Filter“ . Microsoft . Abgerufen 26 May zum Jahr 2015 . 
  44. Aufspringen ^ "Was neu in Internet Explorer 7 ist" . MSDN . Abgerufen 6 März 2009 . 
  45. Aufspringen ^ "PNG Image File Format" . Abgerufen 8 Juni 2009 . 
  46. Aufspringen ^ "VOTE FAILED: APNG 20070405a" . Sourcemailingliste. 2007-04-20. 
  47. Aufspringen ^ „Diskussion für ein einfaches‚animiert‘PNG - Format“ . Archivierte aus dem Original auf 2009-02-26 . Abgerufen 2011.07.12 . 
  48. Aufspringen ^ "APNG Specification" . Abgerufen 26 May zum Jahr 2015 . 
  49. Aufspringen ^ Mozilla Labs »Blog Archive» Bessere Animationen in Firefox 3
  50. Aufspringen ^ "195280 - Entfernung von MNG / JNG Unterstützung" . Abgerufen 26 May zum Jahr 2015 . 
  51. Aufspringen ^ „18574 - (MNG) wiederherstellen Unterstützung für MNG Animationsformat und JNG Bildformat“ . Abgerufen 26 May zum Jahr 2015 . 
  52. Aufspringen ^ "Chromium Blog: Chrome 32 Beta: Animieren WebP Bilder und schneller Chrome für Android Touch - Eingabe" . Blog.chromium.org. 2013.11.21 . Abgerufen 2014.02.01 . 
  53. Aufspringen ^ "Einführung GIFV - Imgur Blog" . imgur.com. 2014.10.09 . Abgerufen 2014.12.14 . 

Externe Links [ Bearbeiten ]