2011-01-16 7 views
2

Mögliche Duplizieren:
Can I programatically determine if a PNG is animated?Wie kann ich erkennen, ob ein Bild ein PNG- oder APNG-Format ist?

APNG ist rückwärts mit PNG kompatibel. Ich habe eine Apng- und PNG-Datei in einem Hex-Editor geöffnet und die ersten paar Bytes sehen identisch aus. Wenn also ein Benutzer eines dieser Formate hochlädt, wie erkenne ich, was das Format wirklich ist? Ich habe das auf einigen Seiten gesehen, die apng blockieren.

Ich denke, die ImageMagick-Bibliothek macht das einfach, aber was wäre, wenn ich die Erkennung ohne den Einsatz einer Bildverarbeitungsbibliothek durchführen würde (zu Lernzwecken)? Kann ich nach bestimmten Bytes suchen, die mir sagen, ob die Datei apng ist?

Lösungen in jeder Sprache sind willkommen.

+1

mögliches Duplikat von [Kann ich programmatisch feststellen, ob ein PNG animiert ist?] (Http://stackoverflow.com/questions/4525152/can-i-programatically-determinine-if-a-png-isanimated), Lösung ist in PHP gegeben. – BoltClock

Antwort

0

APNG und PNG-Dateien 'erste paar Bytes' Kontrolle kann Bypass, leicht. Diese Methode ist also nicht sicher. Der Benutzer kann den Hex-Code der Datei ändern und dieses Steuerelement übergeben.

1

Von http://en.wikipedia.org/wiki/Apng:

bei den Nutzern und Betreuern der PNG und MNG-Formate, war APNG nicht gut aufgenommen. Insbesondere wurde PNG als ein Einzelbild Format [2] konzipiert. APNG versteckt die nachfolgenden Frames in PNG Neben chunks so dass APNG-ahnungslos Anwendungen ignorieren würde, aber gibt es sonst keine Änderungen an der Format-Software zu ermöglichen zwischen den animierten und nicht-animierten Bildern unterscheiden. [Hervorhebungen von mir]

[2] "PNG (Portable Network Graphics) Specification, Version 1.1#8.4. Multiple-image extension"

0

Sie können libmagic verwenden, das bereits auf den meisten Unix-Plattformen installiert ist.

Verwandte Themen