Visualizza immagini Ultra HDR

Il formato dell'immagine Ultra HDR consente di memorizzare più informazioni nelle immagini sull'intensità della luce, producendo luci e ombre più dettagliate, e colori più intensi. Android fornisce il supporto per le immagini Ultra HDR iniziali con Android 14 (livello API 34). Se la tua app è in esecuzione su queste versioni, è importante configurare l'app in modo che queste immagini vengano visualizzate correttamente. Dall'altra parte Se nell'app non vengono visualizzate immagini Ultra HDR, puoi salvare risorse non attivando il display Ultra HDR. In questa pagina viene spiegato come controllare se le immagini supportano Ultra HDR e come visualizzarle correttamente.

Un grafico che mostra una simulazione della differenza tra Dynamic Range standard e High Dynamic Range. Questo grafico mostra un paesaggio con un cielo nuvoloso. La metà destra, che simula l'HDR, presenta alte luci più luminose, ombre più scure e colori più chiari.
Figura 1. Una simulazione della differenza tra Immagini SDR e HDR (High Dynamic Range). Se un dispositivo supporta HDR, le immagini possono avere ombre più scure e alte luci più luminose.

Verificare la presenza di una mappa di guadagno

Le immagini Ultra HDR contengono una mappa di guadagno. La mappa del guadagno è utilizzata per determinare la luminosità aumentata di ciascun pixel nell'immagine. Per eseguire la verifica se un'immagine è in formato Ultra HDR, convertila o disegnabile in un Bitmap e chiama Bitmap.hasGainMap() (disponibile da Android 14) per verificare se è disponibile una mappa di guadagno.

Configura la finestra per visualizzare la modalità Ultra HDR

Per visualizzare immagini Ultra HDR con l'intera gamma dinamica, imposta il colore della finestra su ActivityInfo.COLOR_MODE_HDR. Per farlo, chiama il metodo il metodo setColorMode() della finestra. Queste API sono disponibile su Android 8. tuttavia, le immagini non vengono visualizzate in Ultra HDR a meno che il dispositivo utilizza Android 14 o versioni successive.

Riassumendo

Il seguente codice mostra l'aspetto dell'intero processo. Questo codice presuppone un'immagine viene caricato in una bitmap e controlla se l'immagine ha una mappa di guadagno. Se sì, imposta la modalità colore della finestra su COLOR_MODE_HDR. Se l'immagine non ha una mappa di guadagno, il codice imposta la finestra sull'impostazione predefinita modalità colore.

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);

Risorse aggiuntive

Per saperne di più sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive: