Das Ultra-HDR-Bildformat codiert Informationen zur Leuchtdichte, sodass 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 die Anzeige eines Ultra-HDR-Bildes mit voller Intensität nicht unterstützt. Schließlich kann es sein, dass der Nutzer sein Bild mit jemandem teilt, der ein Gerät hat, das Ultra HDR unterstützt, oder dass er das Bild speichert und es sich Jahre später auf einem neuen Gerät noch einmal ansieht.
Die gute Nachricht ist, dass die meisten Android-Methoden zum Bearbeiten von Bitmaps das Ultra-HDR-Bildformat unterstützen. Wenn du ein Bild grundlegend bearbeitest, z. B. zuschneidest oder drehst, reichen die Standardmethoden von Android aus. Du erhältst ein Ultra HDR-Bild mit den neuen Abmessungen oder der neuen Ausrichtung.
Die Aufgabe ist schwieriger, wenn Sie den Inhalt des Bildes ändern. In diesen Fällen bleiben bei den Standardbearbeitungsmethoden die Helligkeitsinformationen des alten Bildes erhalten, 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 richtige Ergebnis zu erhalten.
Ultra HDR-Format – Übersicht
Das Ultra HDR-Bildformat wird in der Spezifikation für Ultra HDR-Bilder ausführlich beschrieben. Das Wichtigste ist, dass ein Ultra-HDR-Bild sowohl ein primäres Bild als auch eine Gain Map enthält.
- Das Hauptbild enthält die Farbinformationen für jedes Pixel des Bildes.
- Die Gain Map ist ein Standard-JPEG-Bild mit denselben Proportionen wie das Primärbild, aber nicht unbedingt mit denselben Pixelabmessungen. Jedes Pixel der Gain Map gibt die Luminanz des entsprechenden Teils des Primärbilds an.
Die Gain Map kann entweder Graustufen oder Farben enthalten. Wenn die Gain Map farbig ist, gibt jeder Farbkanal auf der Gain Map die Luminanz dieses Farbkanals im entsprechenden Teil des Primärbilds an. Wenn die Gain Map im Graustufenformat vorliegt, gibt jedes Pixel der Gain Map die Luminanz aller drei Farbkanäle in diesem Bereich des Primärbilds 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 immer noch genügend Informationen für ein gutes Ergebnis codiert. Das bedeutet, dass jedes Pixel in der Gain Map die Luminanzinformationen für mehrere Pixel im Primärbild speichern kann.
Grundlegende Ultra HDR-Bearbeitungen
Wenn Sie die Android-APIs Bitmap verwenden, um grundlegende Transformationen an einem Ultra HDR-Bild vorzunehmen, nehmen die Methoden die entsprechenden Änderungen an der Gain Map vor. 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 halb so breit und halb so hoch ist wie das skalierte Primärbild.
In beiden Fällen 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 zu den gewünschten Ergebnissen führt.
Häufige Änderungen, die zu dieser Situation führen können:
- Sticker oder Emojis hinzufügen:Der hinzugefügte Sticker hat dieselben Helligkeits- und Farbsättigungswerte wie der Bereich, in den er eingefügt wurde.
- Zweites Bild überlagern: Das neue Bild verwendet die Informationen zur Helligkeit und Farbintensität des Inhalts, den es überlagert.
- Filter hinzufügen:Die Informationen der alten Gain Map sind möglicherweise nicht für das geänderte Primärbild geeignet.
In jedem Fall bleiben die alten Informationen zur Helligkeit und Farbintensität 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 weiter tun. Wenn Sie die Gain Map ändern möchten, gehen Sie so vor:
- Rufen Sie die aktuelle Gain Map des Bildes ab, indem Sie
Bitmap.getGainmap()aufrufen, und speichern Sie sie im Cache. - Ändern Sie das Primärbild nach Bedarf.
Nehmen Sie entsprechende Änderungen an der im Cache gespeicherten Gain Map vor. Wenn Sie beispielsweise ein Emoji in das Primärbild eingefügt haben, können Sie den entsprechenden Teil der Gain Map auf einen neutralen Wert wie
Color.GRAYsetzen.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: