Was ist eine MPO-Datei?

Eine Multi-Picture-Object-Datei speichert mehrere JPEG-Bilder in einem Container. Die Bilder stellen häufig verschiedene Ansichten einer stereoskopischen Fotografie dar, der Container kann aber auch andere zusammengehörige Bilder enthalten.

So funktionieren MPO-Dateien

MPO ist die Dateiform des Multi-Picture Format, des Standards DC-007 der Camera and Imaging Products Association (CIPA), der erstmals 2009 veröffentlicht und seither überarbeitet wurde. Die Datei beginnt wie eine gewöhnliche JPEG-Datei. Ihr erstes Bild enthält ein APP2-Anwendungssegment mit der Kennung MPF. Darin liegt ein Index in Form eines TIFF-Verzeichnisses: die Anzahl der Bilder und für jedes Bild ein Typ, eine Größe in Bytes und ein Datenoffset. Die übrigen Bilder sind vollständige JPEG-Streams, die an das erste Bild angehängt werden. Ein Programm, das nur JPEG liest, sieht dort lediglich nachgestellte Daten. Deshalb zeigen Anzeigeprogramme ohne MPO-Unterstützung ein plausibles Bild an und ignorieren den Rest. Bekannt ist das Format vor allem von 3D-Kameras, deren Dateien ein Bild pro Blickpunkt enthalten. Der Index kennzeichnet Bilder aber auch als große Thumbnails oder als Einzelbilder eines Panoramas oder einer Serie aus mehreren Blickwinkeln.

Wichtige Fakten

  1. Lesen Sie den Index, um die eingebetteten Bilder zu finden, statt nach JPEG-Markern zu suchen. Das APP2-Segment mit der Kennung MPF enthält die Bildanzahl und einen Eintrag pro Bild mit dessen Größe und Offset. Pillow berechnet beispielsweise jeden Offset relativ zum Beginn des MPF-Headers innerhalb dieses Segments, nicht zum Dateianfang, und behandelt das erste Bild als Offset 0. Für eine sichere Aufteilung der Datei werden sämtliche Indexwerte benötigt, da jedes Bild eigene eingebettete Thumbnails enthalten kann.
  2. Bei der Konvertierung über einen Codepfad, der nur JPEG unterstützt, gehen die zusätzlichen Bilder ohne Fehlermeldung verloren. ExifTool beschreibt sie als Daten im JPEG-Trailer hinter dem ersten Bild. Pillow lädt beim Öffnen einer MPO-Datei nur das primäre Bild und greift über seek auf die anderen zu. Beim Schreiben einer MPO-Datei behält save nur das erste Einzelbild, sofern nicht save_all gesetzt oder append_images angegeben wird. Eine einfache JPEG-Ausgabe enthält ein Bild. Um beide Ansichten eines Stereopaars als JPEG zu erhalten, muss daher jede Ansicht in eine eigene Datei geschrieben werden.
  3. Die Dateiendung ist in beiden Richtungen unzuverlässig. Pillow meldet für jedes JPEG, dessen MPF-Index mehr als ein Bild aufführt, das Format MPO. Das hat Nutzer überrascht, deren Kameradateien mit der Endung .jpg ein zusätzliches großes Thumbnail enthalten. Die Verantwortlichen schlossen den Fehlerbericht, weil die Datei ein gültiges MPO war. Code, der anhand des erkannten Formats JPEG verzweigt, sollte bei solchen Dateien mit MPO rechnen. Pillow macht eine Ausnahme und behandelt Ultra-HDR-Dateien weiterhin als einfache JPEG-Dateien.
  4. Die eingebetteten Bilder sind keine austauschbaren Ansichten. Lesen Sie daher den Typ jedes Eintrags, bevor Sie ihn extrahieren oder verwerfen. Zu den Typen gehören das primäre Bild, große Thumbnails in mehreren Größen, Einzelbilder für Panoramen, Disparitätsbilder und Bilder aus mehreren Blickwinkeln sowie eine Gain-Map. Ein Typ kann auch Undefined sein. Ein nicht erkannter Typ bedeutet daher nicht, dass ein Bild entbehrlich ist. Das Ultra-HDR-Format von Android speichert seine Gain-Map als zusätzliches MPF-Bild. Die Bibliothek libultrahdr von Google schreibt diesen Eintrag jedoch mit einem undefinierten Typ, und die Spezifikation von Android lokalisiert die Gain-Map stattdessen über XMP-Metadaten. Eine Gain-Map ist keine Fotografie: Sie hält fest, wie stark jedes Pixel des primären Bildes für eine HDR-Anzeige aufgehellt werden soll. Wird nur das primäre Bild behalten, bleibt das Bild mit Standarddynamikumfang erhalten und die HDR-Variante geht verloren. Jedes Bild ist ein vollständiges JPEG, das eigene Exif-Daten enthalten kann. Wenden Sie daher die Ausrichtung und andere Metadaten für jedes fotografische Bild einzeln an. Die Gain-Map ist die Ausnahme: Die Spezifikation von Android verlangt, dass ihre Ausrichtung der des primären Bildes entspricht, und ignoriert ihre eigene Exif-Ausrichtung und ihr Farbprofil.

Wann MPO-Dateien relevant sind

Erkennen Sie beim Import von Fotos aus 3D-Kameras oder anderen Geräten, die verknüpfte Bilder speichern, die Mehrbildstruktur. Extrahieren Sie jedes Bild, wenn alle benötigt werden, denn reine JPEG-Software macht nur das erste zugänglich. Suchen Sie auch in Dateien mit der Endung .jpg nach dieser Struktur: Sie wird ebenso für eingebettete große Vorschaubilder und für die Gain-Map von Ultra-HDR-Fotos verwendet.

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