Ultra HDR-Bilder bearbeiten

Das Ultra HDR-Bildformat codiert Helligkeitsinformationen mit denen Geräte hellere Bilder mit intensiveren Farben anzeigen können. Wenn Ihre App ein Ultra HDR-Bild bearbeitet, sollten Sie darauf achten, dass diese Helligkeitsinformationen erhalten bleiben. 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 Sie grundlegende Änderungen an einem Bild vornehmen, z. B. es zuschneiden oder drehen, können Sie die Standardmethoden von Android verwenden. Das Ergebnis ist ein Ultra HDR-Bild mit den neuen Abmessungen oder der neuen Ausrichtung.

Schwieriger wird es, wenn Sie den Inhalt des Bildes ändern. In diesen Fällen behalten die Standardbearbeitungsmethoden die Helligkeitsinformationen des alten Bildes bei, was möglicherweise nicht Ihren Vorstellungen entspricht. In diesen Fällen müssen Sie 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 Sie die Android Bitmap-APIs verwenden, um grundlegende Transformationen an einem Ultra HDR-Bild vorzunehmen, werden die entsprechenden Änderungen an der Gain Map vorgenommen. Die folgenden Bitmap-Vorgänge werden unterstützt:

  • Drehen:Wenn Sie ein Ultra HDR-Bild drehen, wird auch die Gain Map gedreht.
  • Zuschneiden:Wenn Sie ein Ultra HDR-Bild zuschneiden, wird die Gain Map entsprechend zugeschnitten.
  • Skalieren:Wenn Sie ein Ultra HDR-Bild skalieren, 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 Sie komplexere Änderungen an einem Ultra HDR-Bild vornehmen, 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, müssen Sie nichts tun. Wenn Sie die Gain Map ändern möchten, gehen Sie normalerweise so vor:

  1. Rufen Sie die aktuelle Gain Map des Bildes ab , indem Sie Bitmap.getGainmap() aufrufen, und speichern Sie sie im Cache.
  2. Ändern Sie das primäre Bild nach Bedarf.
  3. Nehmen Sie entsprechende Änderungen an der im Cache gespeicherten Gain Map vor. Wenn Sie beispielsweise ein Emoji in das primäre Bild eingefügt haben, können Sie den entsprechenden Teil der Gain Map auf einen neutralen Wert wie Color.GRAY setzen.

  4. Wenden Sie die geänderte Gain Map wieder auf das Bild an , indem Sie Bitmap.setGainmap() aufrufen.

Zusätzliche Ressourcen

Weitere Informationen zu Ultra HDR-Bildern finden Sie in den folgenden zusätzlichen Ressourcen: