Ultra HDR-Bilder anzeigen

Das Ultra HDR-Bildformat ermöglicht es Bildern, mehr Informationen zur Lichtintensität zu speichern, was zu detaillierteren Spitzlichtern und Schatten sowie intensiveren Farben führt. Android unterstützt Ultra HDR-Bilder ab Android 14 (API-Level 34). Wenn Ihre Anwendung mit diesen Versionen ausgeführt wird, müssen Sie sie so konfigurieren, dass diese Bilder korrekt angezeigt werden. Wenn in Ihrer App jedoch keine Ultra HDR-Bilder angezeigt werden, können Sie Geräteressourcen sparen, wenn Sie den Ultra HDR-Bildschirm nicht aktivieren. Auf dieser Seite wird erläutert, wie du prüfen kannst, ob Grafiken Ultra HDR unterstützt und wie die Bilder richtig angezeigt werden.

Eine Grafik, die eine Simulation des Unterschieds zwischen Standarddynamikbereich und High Dynamic Range zeigt. Die Grafik zeigt eine Landschaft mit bewölktem Himmel. Die rechte Hälfte wird in HDR simuliert und bietet hellere Spitzlichter, dunklere Schatten und schärfere Farben.
Abbildung 1: Eine Simulation des Unterschieds zwischen Standard Dynamic Range (SDR) und High Dynamic Range (HDR)-Bildern. Wenn ein Gerät HDR unterstützt, können die Bilder dunklere Schatten und hellere Spitzlichter haben.

Prüfen, ob eine Gewinnkarte vorhanden ist

In Ultra HDR-Bildern ist eine Karte des Zugewinns zu sehen. Die Verstärkungskarte wird verwendet, um die erhöhte Helligkeit jedes Pixels im Bild zu bestimmen. Wenn Sie prüfen möchten, ob ein Bild im Ultra HDR-Format vorliegt, konvertieren Sie das Bild oder Drawable in ein Bitmap-Objekt und rufen Sie Bitmap.hasGainMap() (verfügbar seit Android 14) auf, um zu prüfen, ob es eine Gain Map hat.

Fenster für die Anzeige von Ultra HDR konfigurieren

Wenn Sie Ultra HDR-Bilder mit vollem Dynamikbereich anzeigen möchten, legen Sie den Farbmodus des Fensters auf ActivityInfo.COLOR_MODE_HDR fest. Dazu rufen Sie die Methode setColorMode() des Fensters auf. (Diese APIs sind ab Android 8 verfügbar. Allerdings werden Bilder nur dann in Ultra HDR angezeigt, wenn auf dem Gerät Android 14 oder höher ausgeführt wird.)

Zusammenfassung

Der folgende Code zeigt, wie der gesamte Prozess aussieht. Bei diesem Code wird davon ausgegangen, dass ein Bild in eine Bitmap geladen wird, und prüft, ob das Bild eine Gain Map hat. Ist dies der Fall, ändert der Code den Farbmodus des Fensters in COLOR_MODE_HDR. Wenn das Bild keine Verstärkungskarte hat, wechselt der Code für das Fenster in den Standardfarbmodus.

Kotlin

val bitmap = /* Get Bitmap from Image Resource */
binding.imageContainer.setImageBitmap(bitmap)

// Set color mode of the activity to the correct color mode.
requireActivity().window.colorMode =
   if (bitmap.hasGainmap()) ActivityInfo.COLOR_MODE_HDR else ActivityInfo.COLOR_MODE_DEFAULT

Java

final Bitmap bitmap = /* Get Bitmap from Image Resource */
binding.imageContainer.setImageBitmap(bitmap);

// Set color mode of the activity to the correct color mode.
int colorMode = ActivityInfo.COLOR_MODE_DEFAULT;
if (bitmap.hasGainmap()) colorMode = ActivityInfo.COLOR_MODE_HDR;
requireActivity().getWindow().setColorMode(colorMode);

Weitere Informationen

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