Ultra HDR-Bilder bearbeiten

Das Ultra HDR-Bildformat codiert Helligkeitsinformationen mit denen Geräte hellere Bilder mit intensiveren Farben anzeigen können. Wenn deine App ein Ultra HDR-Bild bearbeitet, sollten diese Helligkeitsinformationen beibehalten werden. Das ist auch dann wichtig, wenn das Gerät des Nutzers Ultra HDR-Bilder nicht mit voller Intensität anzeigen kann. Schließlich kann der Nutzer das Bild an eine Person mit einem Gerät senden, das Ultra HDR unterstützt, oder das Bild speichern und es sich Jahre später auf einem neuen Gerät ansehen.

Die gute Nachricht ist, dass die meisten Android-Methoden zum Bearbeiten von Bitmaps das Ultra HDR-Bildformat unterstützen. Wenn du grundlegende Änderungen an einem Bild vornimmst, z. B. es zuschneidest oder drehst, reichen die Standardmethoden von Android aus. Du erhältst dann ein Ultra HDR-Bild mit den neuen Abmessungen oder der neuen Ausrichtung.

Schwieriger wird es, wenn du den Inhalt des Bildes änderst. In diesen Fällen behalten die Standardbearbeitungsmethoden die Helligkeitsinformationen des alten Bildes bei, was möglicherweise nicht gewünscht ist. In diesen Fällen musst du möglicherweise die Gain Map (die die Helligkeitsinformationen des Bildes codiert) bearbeiten oder entfernen, um das gewünschte Ergebnis zu erzielen.

Überblick über das Ultra HDR-Format

Das Ultra HDR-Bildformat wird in der Spezifikation für Ultra HDR-Bilder ausführlich beschrieben. Wichtig ist, dass ein Ultra HDR-Bild sowohl ein primäres Bild als auch eine Gain Map enthält.

  • Das primäre Bild enthält die Farbinformationen für jedes Pixel des Bildes.
  • Die Gain Map ist ein Standard-JPEG-Bild mit denselben Proportionen wie das primäre Bild, aber nicht unbedingt mit denselben Pixelabmessungen. Jedes Pixel der Gain Map gibt die Luminanz des entsprechenden Teils des primären Bildes an.

Die Gain Map kann entweder in Graustufen oder in Farbe sein. Wenn die Gain Map farbig ist, gibt jeder Farbkanal in der Gain Map die Luminanz dieses Farbkanals im entsprechenden Teil des primären Bildes an. Wenn die Gain Map in Graustufen ist, gibt jedes Pixel der Gain Map die Luminanz aller drei Farbkanäle in diesem Teil des primären Bildes an.

Die Gain Map muss dieselben Proportionen wie das primäre Bild haben, aber nicht dieselben Pixelabmessungen. Wenn die Android-Plattform Ultra HDR-Bilder erstellt, wird eine Gain Map mit einer geringeren Breite und Höhe als das primäre Bild erstellt. Dadurch wird die Dateigröße erheblich reduziert, aber es werden dennoch genügend Informationen für ein gutes Ergebnis codiert. Das bedeutet, dass in jedem Pixel der Gain Map die Luminanzinformationen für mehrere Pixel im primären Bild gespeichert sein können.

Grundlegende Ultra HDR-Bearbeitungen

Wenn du mit den Android Bitmap-APIs grundlegende Transformationen an einem Ultra HDR-Bild vornimmst, werden die entsprechenden Änderungen an der Gain Map vorgenommen. Die folgenden Bitmap-Vorgänge werden unterstützt:

  • Drehen:Wenn du ein Ultra HDR-Bild drehst, wird auch die Gain Map gedreht.
  • Zuschneiden:Wenn du ein Ultra HDR-Bild zuschneidest, wird die Gain Map entsprechend zugeschnitten.
  • Skalieren:Wenn du ein Ultra HDR-Bild skalierst, wird die Gain Map so skaliert, dass sie die Hälfte der Breite und die Hälfte der Höhe des skalierten primären Bildes hat.

In jedem Fall bleiben die Helligkeitsinformationen erhalten.

Erweiterte Ultra HDR-Bearbeitungen

Wenn du komplexere Änderungen an einem Ultra HDR-Bild vornimmst, bleibt die Gain Map unverändert, was möglicherweise nicht das gewünschte Ergebnis liefert.

Häufige Bearbeitungen, die zu dieser Situation führen können, sind:

  • Sticker oder Emojis hinzufügen:Der hinzugefügte Sticker hat dieselben Luminanz- und Farbintensitätswerte wie der Bereich, in den er eingefügt wurde.
  • Ein zweites Bild überlagern:Das neue Bild verwendet die Luminanz- und Farbintensitätsinformationen des Inhalts, den es überlagert.
  • Filter hinzufügen:Die Informationen der alten Gain Map sind möglicherweise nicht für das geänderte primäre Bild geeignet.

In jedem Fall bleiben die alten Luminanz- und Farbintensitätsinformationen erhalten, sind aber möglicherweise nicht für das geänderte Bild geeignet.

Wenn die ursprüngliche Gain Map für das bearbeitete Bild geeignet ist, musst du nichts tun. Wenn du die Gain Map ändern möchtest, ist der übliche Workflow so:

  1. Rufe die aktuelle Gain Map des Bildes ab, indem du Bitmap.getGainmap() aufrufst, und speichere sie im Cache.
  2. Ändere das primäre Bild nach Bedarf.
  3. Nimm entsprechende Änderungen an der im Cache gespeicherten Gain Map vor. Wenn du beispielsweise ein Emoji in das primäre Bild eingefügt hast, kannst du den entsprechenden Teil der Gain Map auf einen neutralen Wert wie Color.GRAY setzen.

  4. Wende die geänderte Gain Map wieder auf das Bild an , indem du Bitmap.setGainmap() aufrufst.

Zusätzliche Ressourcen

Weitere Informationen zu Ultra HDR-Bildern findest du in den folgenden zusätzlichen Ressourcen: