Le format d'image Ultra HDR permet aux images de stocker plus d'informations sur l'intensité de la lumière, ce qui donne des tons clairs et des ombres plus détaillés, ainsi que 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 qu'elle affiche correctement ces images. En revanche, si votre application n'affiche pas d'images Ultra HDR, vous pouvez économiser des ressources de l'appareil en ne l'activant pas. Cette page explique comment vérifier si les graphiques sont compatibles avec Ultra HDR et comment les afficher correctement.
Vérifier la présence d'une carte de gain
Les images Ultra HDR contiennent une carte de gain. Elle permet de déterminer la luminosité accrue de chaque pixel de l'image. Pour vérifier
si une image est au format Ultra HDR, convertissez-la ou convertissez un drawable en
Bitmap, puis appelez Bitmap.hasGainMap()
(disponible depuis Android 14) pour vérifier si elle possède une carte de gain.
Configurer votre fenêtre pour afficher Ultra HDR
Pour afficher des images Ultra HDR avec toute la plage dynamique, définissez le mode 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 exécute Android 14 ou une version ultérieure.)
Synthèse
Le code suivant montre l'ensemble du processus. Ce code suppose qu'une image est chargée dans un bitmap et vérifie si elle possède une carte de gain. Si c'est le cas, le
code passe le mode couleur de la fenêtre à COLOR_MODE_HDR. Si l'image ne possède pas de carte de gain, le code passe la fenêtre au mode couleur 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 :
- Vidéo : Créer des expériences multimédias Android de haute qualité
- Application exemple : Afficher Ultra HDR
- Spécifications liées au format d'image Ultra HDR
- Vidéo : Android Developer Story : L'adoption précoce d'Ultra HDR par Instagram transforme l'expérience utilisateur en seulement trois mois