JPEG File Interchange Format

JPEG File Interchange Format
Foto einer Blume mit steigender Verlustrate von links nach rechts


Foto einer Blume mit steigender Verlustrate von links nach rechts

Dateiendung:.jpg, .jpeg, .jpe, .jfif
MIME-Type:image/jpeg
Magische Zahl:FF D8
Entwickelt von:Joint Photographic Experts Group
Art:Verlustbehaftetes Grafikformat
Standard(s):ISO/IEC 10918, ITU-T T.81, ITU-T T.83, ITU-T T.84, ITU-T T.86
Website:www.jpeg.org


Foto einer Blume mit steigender Verlustrate von links nach rechts

Das JPEG File Interchange Format (JFIF) ist ein 1991 von Eric Hamilton entwickeltes Grafikformat zur Speicherung von Bildern, die nach der JPEG-Norm komprimiert wurden. Als Dateinamenserweiterung wird meistens jpg, seltener jpeg oder jpe verwendet.

Die JPEG-Norm legt nur den Komprimierungsvorgang fest, nicht aber, wie die entstandenen Bilddaten abgelegt werden müssen, damit sie zwischen verschiedenen Computerprogrammen ausgetauscht werden können. Zum Beispiel legt JPEG nicht fest, welcher Farbraum benutzt werden soll. JFIF ist eine Methode, JPEG-Daten abzulegen; weitere Möglichkeiten sind das von der Joint Photographic Experts Group veröffentlichte Still Picture Interchange File Format (SPIFF) und JPEG Network Graphics. Gemeinhin bezeichnet „JPEG-Datei“ eine JFIF-Datei.

JFIF macht nur von einem kleinen Teil der von JPEG angebotenen Möglichkeiten Gebrauch: so ist als Farbmodell nur noch YCbCr und nicht mehr RGB zugelassen; zur Entropiekodierung ist nur Huffman-Kodierung erlaubt. Hinzugekommen sind einige Mechanismen zur Synchronisation und Resynchronisation bei Übertragungsfehlern.

Dateiformat

Die Größe von JPEG-Bildern ist bei JFIF auf 65.535×65.535 Pixel beschränkt.

JFIF-Bilddateien werden durch einen SOI-Marker FF D8 eingeleitet. Auf diesen Marker folgt das JFIF-Tag: FF E0 00 10 4A 46 49 46 00. Die Sequenz 4A 46 49 46 ist die ASCII-Repräsentation von „JFIF“. Gängige Bildprogramme können auch Dateien ohne JFIF-Tag verarbeiten.

Die JFIF-Dateien sind in Segmente (bei TIFF als Tag bezeichnet) unterteilt. Die Segmente sind generell in folgender Form aufgebaut: Ein FF xx s1 s2 leitet das Tag ein. FF ist ein hexadezimaler Wert und entspricht dezimal 255. Das xx bestimmt die Art des Tags. 256 * s1 + s2 gibt die Länge des Segmentes an. In den Segmenten können sich weitere Bilder verbergen, oft ein kleines Vorschaubild für die schnelle Vorschau. Einzelne Segmente können mehrfach vorkommen.

FF xxSymbolBezeichnung
FF D8SOIStart Of Image
FF E0APP0JFIF tag
FF CnSOFnStart of Frame Marker, legt Art der Kompression fest:
FF C0SOF0Baseline DCT
FF C1SOF1Extended sequential DCT
FF C2SOF2Progressive DCT
FF C3SOF3Lossless (sequential)
FF C4DHTDefinition der Huffman-Tabellen
FF C5SOF5Differential sequential DCT
FF C6SOF6Differential progressive DCT
FF C7SOF7Differential lossless (sequential)
FF C8JPGreserviert für JPEG extensions
FF C9SOF9Extended sequential DCT
FF CASOF10Progressive DCT
FF CBSOF11Lossless (sequential)
FF CDSOF13Differential sequential DCT
FF CESOF14Differential progressive DCT
FF CFSOF15Differential lossless (sequential)
FF CCDACDefinition der arithmetischen Codierung
FF DBDQTDefinition der Quantisierungstabellen
FF DDDRIDefine Restart Interval
FF E1APP1Exif-Daten
FF EEAPP14Oft für Copyright-Einträge
FF EnAPPnn=2..F allg. Zeiger
FF FECOMKommentare
FF DASOSStart of Scan
FF D9EOIEnd of Image

Ein Beispiel für ein Copyright-Tag: FF EE 00 26 'File written by ...'

Ein Beispiel für ein Kommentar-Tag: FF FE s1 s2 'This photo shot is dated ...'

Aufbau einer JFIF-Datei:

SOI-SegmentFF D8
APP0-SegmentFF E0 s1 s2 4A 46 49 46 00 v1 v2 ...
… weitere Segmente …
SOS-SegmentFF DA
DataKomprimierte Daten
EOI-SegmentFF D9

Die Längenangaben der Segmente enthalten auch den Platz für die Längenangaben selbst: Ein leeres Segment hat daher die Länge 2, da dies der Länge der Komponenten s1 und s2 selbst entspricht.

Auf das Start-of-Scan-(SOS)-Segment (Marker FF DA) folgen direkt die komprimierten Daten, bis zum Start des nächsten Segments, das durch den nächsten Marker angezeigt wird. Sollte innerhalb der Daten ein FF auftreten, so wird dies mit einer folgenden 00 (Null) markiert. Andere Werte zeigen das Auftreten eines neuen Segments bzw. Markers an. Ausnahme: Folgt dem FF einer der Restart-Marker (D0 - D7) so setzen sich die Daten direkt dahinter weiter fort: FF DA ... daten ... FF D0 ... daten ...

Da einen Dekoder nur Daten zwischen einer Anfangsmarke und einer Endmarke interessieren, ist es auch möglich, Exif, IPTC-IIM-Standard-Informationen und sogar ganze XML- oder andere Dateien nach dem Datacontainer-Verfahren in der JFIF-Datei unterzubringen. Die Erweiterungen sind aber nicht JFIF-konform. Es wird empfohlen solche Dateien vor einer Veröffentlichung eines Bildes zu entfernen, wenn sie private Daten enthalten.

Exif-Metadaten

In Bilddateien im JPEG-Format können auch Metadaten im Exif-Format abgespeichert werden; viele Digitalkameras speichern hier Informationen über Hersteller und Softwareversion ab. Lizenzdaten können ebenfalls gespeichert werden. Aufmerksamkeit erregte die Angewohnheit von einigen Bildaufnahme- (z. B. Software in Digitalkamera) und Bildbearbeitungsprogrammen, Vorschaubilder im Exif-Feld zu speichern, die bei einer Veränderung der Bilddatei nicht zwangsläufig angepasst werden; so können nicht zur Veröffentlichung bestimmte Teile der Bilddatei in niedriger Auflösung trotzdem an die Öffentlichkeit geraten.

Literatur

  • Thomas W. Lipp: Grafikformate. Microsoft Press, Unterschleißheim 1997, ISBN 3-86063-391-0.
  • John Miano: Compressed Image File Formats. Addison-Wesley, Reading 2000, ISBN 0-201-60443-4.

Weblinks

Commons: JPEG file format – Sammlung von Bildern, Videos und Audiodateien

Auf dieser Seite verwendete Medien

Phalaenopsis JPEG.png
Autor/Urheber: André Karwath Aka; technical changes by Die Autorenschaft wurde nicht in einer maschinell lesbaren Form angegeben. Es wird Brianski als Autor angenommen (basierend auf den Rechteinhaber-Angaben)., Lizenz: CC BY-SA 2.5
A picture of a flower (Phalaenopsis_(aka).jpg by André Karwath) compressed with successively higher loss EG compression ratios from left to right by SWFlash.