Was ist JFIF?

JFIF ist eine Austauschkonvention, die JPEG-komprimierte Bilddaten in eine definierte Dateistruktur einbettet. Sie legt Details wie Komponentenausrichtung, Farbinterpretation, Pixeldichte und Seitenverhältnis fest.

So funktioniert JFIF

JFIF ergänzt einen JPEG-Stream um einen kleinen, festen Satz von Konventionen, damit unabhängige Decoder ihn gleich interpretieren. Das APP0-Headersegment muss unmittelbar auf den Bildstartmarker folgen. Es enthält eine Version, eine Pixeldichte in Punkten pro Zoll oder Zentimeter (oder bei der Einheit 0 nur ein Pixelseitenverhältnis) sowie ein optionales Thumbnail. Die Spezifikation legt außerdem die Farbinterpretation als Graustufen oder YCbCr mit vollem Wertebereich fest, die Reihenfolge der Abtastwerte von oben nach unten und die Position unterabgetasteter Chrominanzwerte relativ zur Luminanz. Die Datei bleibt ein markerbasierter JPEG-Stream und ist kein boxbasierter Container. Andere Anwendungssegmente, etwa ein ICC-Profil in APP2, können auf den JFIF-Header folgen. Version 1.02 aus dem Jahr 1992 wurde später als ITU-T T.871 und ISO/IEC 10918-5 formalisiert.

Wichtige Fakten

  1. Erkennen Sie JFIF anhand der Bytes, nicht anhand der Endung: Die Datei beginnt mit SOI (FF D8), unmittelbar gefolgt von einem APP0-Segment (FF E0, dann eine Längenangabe von zwei Byte), dessen Daten mit der nullterminierten Zeichenfolge JFIF (4A 46 49 46 00) beginnen. Eine JPEG-Datei mit einem anderen ersten Segment, etwa APP1 von Exif, ist keine konforme JFIF-Datei, selbst wenn sie .jpg oder .jfif heißt. Eine passende Signatur zeigt nur, dass sich eine Datei als JFIF ausweist: Konformität erfordert auch einen gültigen JPEG-Austauschstream und die Header- und Frame-Vorgaben aus T.871, Abschnitt 10.1. Dazu gehören Dichtewerte ungleich null sowie eine oder drei Komponenten mit den Kennungen 1, 2 und 3 für Y, Cb und Cr.
  2. JFIF umfasst nur Bilder mit einem oder drei Kanälen zu je 8 Bit: Graustufen Y oder YCbCr auf Grundlage von BT.601, skaliert auf den vollen Wertebereich von 0 bis 255. JPEGs mit CMYK- oder RGB-Encoding fallen nicht darunter und werden durch andere Konventionen wie den APP14-Marker von Adobe gekennzeichnet. Der Standard selbst weist darauf hin, dass dies nur eine grundlegende Farbtreue bietet und für genauere Farben ein ICC-Profil nötig sein kann.
  3. JFIF und Exif verlangen jeweils ihr eigenes Segment unmittelbar nach SOI (APP0 für JFIF, APP1 für Exif). Eine Datei kann daher nicht beide Anforderungen strikt erfüllen. Schreibprogramme kombinieren sie dennoch, etwa indem sie zuerst JFIF-APP0 und danach APP1 von Exif ausgeben. Diese Reihenfolge erfüllt die Platzierungsvorgabe von JFIF, aber nicht die von Exif. Ein Parser sollte daher jedes Anwendungssegment durchgehen und dessen Kennungszeichenfolge prüfen, statt eine bestimmte Metadatenstruktur vorauszusetzen.
  4. Ein JFIF-Header kann ein unkomprimiertes RGB-Thumbnail mit 24 Bit einbetten. Version 1.02 ergänzt Erweiterungssegmente namens JFXX für Thumbnails mit JPEG-Encoding, Paletten oder RGB. Exif definiert einen eigenen, separaten Thumbnail-Mechanismus. Ein Workflow, der eingebettete Vorschauen finden oder entfernen muss, muss daher auch diesen untersuchen. Dies sind nicht die einzigen möglichen Speicherorte für eine Vorschau: Photoshop-Bildressourcenblöcke können beispielsweise ein weiteres Thumbnail enthalten.

Wann JFIF relevant ist

Parser können JFIF sowohl in gewöhnlichen .jpg-Dateien als auch in Dateien mit der Erweiterung .jfif antreffen. Software muss außerdem Metadatenkonventionen wie Exif berücksichtigen, die nicht vollständig mit JFIF kompatibel sind.

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren