Was ist eine JFIF-Datei?
JFIF (JPEG File Interchange Format) ist ein Bilddateiformat, das die .jfif-Erweiterung verwendet. JFIF baut auf JIF (JPEG Interchange Format) auf, indem es die Komplexität reduziert und dessen Einschränkungen behebt.
Kurze Geschichte von JFIF
Die Entwicklung des JFIF-Formats wurde von Eric Hamilton geleitet, und die erste Version wurde Ende 1991 vereinbart. Version 1.02 wurde am 7. September 1992 veröffentlicht. RFC 2046 legte fest, dass das JFIF-Format zur Übertragung von JPEG-Bildern über das Internet verwendet wird. JFIF wurde 2009 von ECMA veröffentlicht und 2011 von ITU-T als Empfehlung T.871 sowie 2013 von ISO/IEC als ISO/IEC 10918-5 standardisiert.
JFIF-Dateiformat
Eine JFIF-Datei besteht aus einer Sequenz von Markierungen, wie sie in Teil 1 des JPEG-Standards definiert sind. Jede Markierung besteht aus zwei Bytes (FF, gefolgt von einem Byte, das den Markierungstyp angibt). Markierungen können entweder eigenständig sein oder den Beginn eines Markierungssegments anzeigen.
JFIF erlaubt es, dass mehrere Komponenten wie Y, Cb und Cr unterschiedliche Auflösungen haben, ihre Ausrichtung ist jedoch nicht definiert. Im Gegensatz zu JPEG kann JFIF Informationen zu Auflösung und Seitenverhältnis bereitstellen. Zudem definiert JFIF das zu verwendende Farbmodell.
Dateistruktur
Segment | Code | Beschreibung |
---|---|---|
SOI | FF D8 | Start des Bildes |
JFIF-APP0 | FF E0 s1 s2 4A 46 49 46 00 … | |
JFXX-APP0 | FF E0 s1 s2 4A 46 58 58 00 … | |
zusätzliche Markierungssegmente | ||
SOS | FF DA | Start des Scans |
komprimierte Bilddaten | ||
EOI | FF D9 | Bildende |
Der JFIF-Standard definiert die folgenden Segmente:
JFIF APP0-Markersegment
Es ist ein obligatorisches Segment, das Bildparameter enthält. Es kann auch ein eingebettetes unkomprimiertes Thumbnail enthalten.
Feld | Größe (Bytes) | Beschreibung |
---|---|---|
APP0-Marker | 2 | FF E0 |
Länge | 2 | Länge des Segments ohne APP0-Markierung |
Identifier | 5 | JFIF (4A 46 49 46 00) in ASCII abgeschlossen durch ein Null-Byte |
JFIF-Version | 2 | Version des JFIF |
Dichteeinheiten | 1 | Einheit für die folgenden Pixeldichtefelder 00 : Keine Einheiten; Das Pixel-Seitenverhältnis Breite:Höhe entspricht Ydensity:Xdensity 01 : Pixel pro Zoll 02 : Pixel pro Zentimeter |
Xdensity | 2 | Horizontale Pixeldichte größer Null |
Ydensity | 2 | Vertikale Pixeldichte größer Null |
Xthumbnail | 1 | Horizontale Pixelzahl des eingebetteten RGB-Thumbnails. Kann Null sein |
Ythumbnail | 1 | Vertikale Pixelzahl des eingebetteten RGB-Thumbnails. Kann Null sein |
Thumbnail-Daten | 3 × n | Unkomprimierte 24-Bit-RGB-Raster-Thumbnail-Daten |
JFIF-Erweiterung APP0-Markersegment
Dies ist ein optionaler Abschnitt, der, falls definiert, unmittelbar auf das JFIF-APP0-Markierungssegment folgen muss. Dieser Abschnitt wird von JFIF Version 1.02 und höher unterstützt und ermöglicht das Einbetten von Miniaturansichten in drei verschiedenen Formaten.
Feld | Größe (Bytes) | Beschreibung |
---|---|---|
APP0-Marker | 2 | FF E0 |
Länge | 2 | Länge des Segments ohne APP0-Markierung |
Bezeichner | 5 | JFXX (4A 46 58 58 00) in ASCII abgeschlossen durch ein Null-Byte |
Thumbnail-Format | 1 | Gibt an, welches Datenformat für das folgende eingebettete Thumbnail verwendet wird: 10 : JPEG-Format 11: 1 Byte pro Pixel, palettiertes Format 13 : 3 Byte pro Pixel RGB-Format |
Thumbnail-Daten | Variable |
Konvertierung von JFIF in andere Bilddateiformate
JFIF kann in gängige Bilddateiformate wie PNG, JPG und PDF konvertiert werden.