Afficher des images Ultra HDR

Le format d'image Ultra HDR permet aux images de stocker plus d'informations sur l'intensité de la lumière, ce qui permet d'obtenir des tons clairs et des ombres plus détaillés, et des couleurs plus intenses. Android est compatible avec les images Ultra HDR à partir d'Android 14 (niveau d'API 34). Si votre application s'exécute sur ces versions, il est important de la configurer pour afficher correctement ces images. En revanche, si votre application n'affiche pas d'images Ultra HDR, vous pouvez économiser les ressources de l'appareil en n'activant pas l'affichage Ultra HDR. Cette page explique comment vérifier si les éléments graphiques sont compatibles avec l'Ultra HDR et comment les afficher correctement.

Graphique représentant une simulation de la différence entre les plages dynamiques standards et les plages dynamiques élevées. L'image montre un paysage avec un ciel nuageux. La partie droite, qui simule le HDR, offre des tons clairs plus lumineux, des ombres plus sombres et des couleurs plus claires.
Figure 1. Simulation de la différence entre les images SDR (High Dynamic Range) et les images HDR (High Dynamic Range) Si un appareil est compatible avec la technologie HDR, les images peuvent présenter des ombres plus sombres et des tons clairs plus lumineux.

Vérifier la présence d'une carte de gain

Les images Ultra HDR contiennent un carte des gains. La carte de gain permet de déterminer l'augmentation de la luminosité de chaque pixel de l'image. Pour vérifier si une image est au format Ultra HDR, convertissez l'image ou le drawable en Bitmap et appelez Bitmap.hasGainMap() (disponible depuis Android 14) pour vérifier si une carte de gain s'affiche.

Configurer votre fenêtre pour afficher l'Ultra HDR

Pour afficher des images Ultra HDR avec la plage dynamique complète, définissez le mode de couleur de la fenêtre sur ActivityInfo.COLOR_MODE_HDR. Pour ce faire, appelez la méthode setColorMode() de la fenêtre. (Ces API sont disponibles à partir d'Android 8. Toutefois, les images ne s'affichent pas en Ultra HDR, sauf si l'appareil est équipé d'Android 14 ou version ultérieure.)

Synthèse

Le code suivant montre à quoi ressemble l'ensemble du processus. Ce code suppose qu'une image est chargée dans un bitmap et vérifie si l'image dispose d'un mappage de gain. Si c'est le cas, le code fait passer le mode de couleur de la fenêtre à COLOR_MODE_HDR. Si l'image n'a pas de carte de gain, le code fait passer la fenêtre au mode de couleurs par défaut.

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

Ressources supplémentaires

Pour en savoir plus sur les images Ultra HDR, consultez les ressources supplémentaires suivantes: