Die Bestimmung der Größe eines JPEG - (JFIF) image

Ich muss die Größe eines JPEG - (JFIF) image. Das Bild wird nicht gespeichert, als stand-alone-Datei, so kann ich nicht verwenden GetFileSize oder jeder anderen API wie diese hier (das Bild wird in einem stream und keine anderen header vorhanden ist, außer den üblichen JPEG/JFIF-header(s)).

Ich Tat etwas Forschung und fand heraus, dass JPEG-Bilder aus verschiedenen teilen, jeder Teil, beginnend mit einem frame marker (0xFF 0xXX), und die Größe dieses Rahmens. Mit Hilfe dieser Informationen war ich in der Lage zu analysieren eine Vielzahl von Informationen aus der Datei.

Das problem ist, ich kann nicht finden die Größe der komprimierten Daten, so wie es scheint, gibt es kein frame marker für die komprimierten Daten. Auch scheint es, dass die komprimierten Daten folgt die SOS (FFDA) Markierung und das Bild endet mit der End Of Image (EOI) (FFD9) marker.

Einen Weg, dies zu erreichen wäre, um die Suche für die EOI-marker von byte zu byte, aber ich denke, die komprimierte Daten enthalten könnte diese Kombination von bytes, richtig?

Gibt es eine einfache und richtige Weise zu finden, die Gesamtgröße des Bildes? (Ich würde lieber ein paar code/Idee ohne jegliche externe Bibliothek)

Im Grunde, ich brauche den Abstand (in bytes) zwischen dem Start-Image (SOI-FFE0) und End of Image (EOI-FFD9).

  • Hmm... SOS-marker in der JFIF-Datei?.. Ich habe das Gefühl etwas verpasst in den specs...
  • Original-Beitrag sagte: "es ist keine Datei". Er sagt, dass es ist ein SOS und ein EOI. Irgendwie hat er eine JFIF-stream eingebettet, ohne irgendwelche äußeren Wrapper.
InformationsquelleAutor botismarius | 2009-10-12
Schreibe einen Kommentar