Volker: Animiertes Gif in PHP erkennen?

Gibt es eine Möglichkeit zu erkennen ob ein Gif animiert ist oder nicht?

  1. Hallo Volker,

    Ich hab mal testweise 3 Gifs gebastelt, alle 1 x 1 Pixel, eines weiss, eines schwarz, eines wechselt die Farbe. Im HEX-Editor sehen die so aus:

    weiss:
    00000000h: 47 49 46 38 39 61 01 00 01 00 80 00 00 FF FF FF ; GIF89a....€..ÿÿÿ
    00000010h: 00 00 00 21 F9 04 00 00 00 00 00 2C 00 00 00 00 ; ...!ù......,....
    00000020h: 01 00 01 00 00 02 02 44 01 00 3B                ; .......D..;

    schwarz:
    00000000h: 47 49 46 38 39 61 01 00 01 00 80 00 00 00 00 00 ; GIF89a....€.....
    00000010h: FF FF FF 21 F9 04 00 00 00 00 00 2C 00 00 00 00 ; ÿÿÿ!ù......,....
    00000020h: 01 00 01 00 00 02 02 44 01 00 3B                ; .......D..;

    animiert:
    00000000h: 47 49 46 38 39 61 01 00 01 00 91 02 00 00 00 00 ; GIF89a....‘.....
    00000010h: FF FF FF FF FF FF 00 00 00 21 FF 0B 4E 45 54 53 ; ÿÿÿÿÿÿ...!ÿ.NETS
    00000020h: 43 41 50 45 32 2E 30 03 01 00 00 00 21 F9 04 05 ; CAPE2.0.....!ù..
    00000030h: 00 00 02 00 2C 00 00 00 00 01 00 01 00 00 02 02 ; ....,...........
    00000040h: 44 01 00 21 F9 04 05 00 00 02 00 2C 00 00 00 00 ; D..!ù......,....
    00000050h: 01 00 01 00 00 02 02 4C 01 00 3B                ; .......L..;

    Ich hab das mit ein paar anderen animierten Gifs verglichen und der String NETSCAPE2.0 (hex: 21 FF 0B 4E 45 54 53 43 41 50 45 32 2E 30) taucht in allen auf. Ich weiss nicht, ab das auf alle animierten Gifs zutrifft, koennte aber gut sein. Du koenntest demnach die Bilder einlesen und nachschauen, ob der bewusste String drin vorkommt, oder nicht.

    Gruß,

    Dieter

    1. Ich hab das mit ein paar anderen animierten Gifs verglichen und der String NETSCAPE2.0 (hex: 21 FF 0B 4E 45 54 53 43 41 50 45 32 2E 30) taucht in allen auf. Ich weiss nicht, ab das auf alle animierten Gifs zutrifft, koennte aber gut sein.

      Gut gemeint, kann aber nicht sein, da die ersten animierten GIFs bereits zu einem Zeitpunkt aufgetaucht sind, als das http-Protokoll noch nicht einmal angedacht und Netscape noch weit entfernt von seiner Gründung war. Die Gifs damals begannen mit GIF87a und konnten bereites animiert werden. Ich kenn' die Antwort auf die eigentliche Frage leider auch nicht, aber das ist unter Garantie relativ einfach nachzulesen...

      1. Hallo klawischnigg,

        Jetzt hast Du mich neugierig gemacht, also hab ich mal ein bisschen gegoogelt

        Ich zitiere mal Wikipedia http://en.wikipedia.org/wiki/Gif
        <zitat>
        The original version of GIF was 87a. In 1989, CompuServe devised an enhanced version, called 89a [1] (http://www.w3.org/Graphics/GIF/spec-gif89a.txt), that added support for multiple images in a stream and storage of application-specific metadata. The two versions can be distinguished by looking at the first six bytes of the file, which, when interpreted as ASCII, read "GIF87a" and "GIF89a", respectively.

        When the World Wide Web gained popularity, GIF became one of the two image formats commonly used on Web sites, the other being JPEG. Most Internet browsers at this time did not support any other image formats, not even uncompressed Windows bitmap files, to discourage web designers from using files larger than necessary.

        The GIF89a feature of storing multiple images in one file, accompanied by control data, is used extensively on the web to produce simple animations.
        </zitat>

        Das heisst, 89a konnte erst animiert werden

        David Simmons erklaert uns dazu http://www.davidsimmons.com/tips/081097/
        <zitat>
        Animated GIFs are implemented using the GIF89A specification for image storage. This specification, formed in 1989, provides the option of including multiple image frames in GIFs. When displayed, these image frames are shown in sequence with a specified time delay between each. After the last image is displayed, animation stops.

        Netscape Communications, Inc. introduced an application extention to the GIF89A specification which designated "looping" to allow a GIF89A gif animation to return to the first frame when the last frame is displayed, providing continuous animation. The extention consists of the text "NETSCAPE2.0", probably named after the version of Netscape's browser which first implemented this extention. All animated GIFs you encounter on the web which loop forever contain this extention.
        </zitat>

        Also bedeutet Gif89a, das Bild _koennte_ animiert sein, Gif89a und NETSCAPE2.0 zusammen, ein Gif _ist_ animiert und kann loopen. Gif87a ist statisch. Noch ein paar animierte Gifs aus Prä-Netscape-Zeiten zu zerlegen, ueberlasse ich dem OP

        Gruß,

        Dieter

        1. Also bedeutet Gif89a, das Bild _koennte_ animiert sein, Gif89a und NETSCAPE2.0 zusammen, ein Gif _ist_ animiert und kann loopen. Gif87a ist statisch. Noch ein paar animierte Gifs aus Prä-Netscape-Zeiten zu zerlegen, ueberlasse ich dem OP

          Interessant, wieder etwas gelernt; was ich in diesem Zusammenhang aber in Abrede stelle ist, daß es keine animierten GIF87a Bilder gibt. Ich habe eben gekramt und auf einer uralt (Ende 80, Anfang 90) CD solche Bilder gefunden; damals gab es noch kein mpg oder so, leider sind die nicht wirklich jugendfrei, aber ich kann Dir gerne den Header posten:

          GIF87 [Anm. d. Red: binaerer Inhalt musste geloescht werden]

          blabla .........................

          wenn es Dich aus rein technischen Gründen (;-)interessiert, dann schick ich zur Beweisführung Dir die Bilder gerne per email...

          1. Hallo klawischnigg,

            damals gab es noch kein mpg oder so, leider sind die nicht wirklich jugendfrei,

            Meine Jugend hab ich schon einige Jahre hinter mir (Jahrgang '62)

            wenn es Dich aus rein technischen Gründen (;-)interessiert, dann schick ich zur Beweisführung Dir die Bilder gerne per email...

            Ich will Dir auch ohne Beweise Glauben schenken. Ich frage mich allerdings, wie man so einen Kram so ewig aufheben kann...
            Meine erste Berührung mit digitalem Schweinkram hatte ich ca. 1975, als mein Bruder damals unbekleidete Damsellen in feinstem Ascii auf grün-weissem Endlospapier von der Arbeit mitgebracht hat. Ausserdem gab es noch Hendrix und Guevara in diesem Stil. Die haben dann ein paar Jahre in meinem Zimmer gehangen. Tja, lange her.

            Gruß,

            Dieter

            1. Ich will Dir auch ohne Beweise Glauben schenken. Ich frage mich allerdings, wie man so einen Kram so ewig aufheben kann...

              gehört nicht wirklich zu den CDs, die in meinem FirstAid-Kit sind, hab eine Zeitlang suchen müssen, vor allem, weil es mich interessiert hat, ob Du recht hast ;)

        2. Was ich noch sagen wollte, auch wenn die Postings jetzt vermutlich in falscher Reihenfolge dastehen:

          Das von Dir entdeckte und mit Deinem Wikipedia-Auszug bestärkte Verfahren scheint imho auszureichen, um animierte GIfs von statischen zu unterscheiden, auch wenn es solche "Exoten" wie in meinem VOrposting beschriebenen geben mag...

          1. Hallo klawischnigg,

            Das von Dir entdeckte und mit Deinem Wikipedia-Auszug bestärkte Verfahren scheint imho auszureichen, um animierte GIfs von statischen zu unterscheiden, auch wenn es solche "Exoten" wie in meinem VOrposting beschriebenen geben mag...

            Das kann gut sein. War auf jeden Fall ein interssantes Thema und wir haben wieder was gelernt.

            Gruß,

            Dieter