Le format d'image Ultra HDR encode des informations de luminosité qui permettent aux appareils d'afficher des images plus lumineuses avec des couleurs plus intenses. Lorsque votre application modifie une image Ultra HDR, vous devez veiller à préserver ces informations de luminosité. C'est important même si l'appareil de l'utilisateur n'est pas compatible avec l'affichage d'une image Ultra HDR à pleine intensité. Après tout, l'utilisateur peut partager son image avec une personne disposant d'un appareil compatible avec l'Ultra HDR, ou il peut enregistrer cette image et la regarder à nouveau sur un nouvel appareil des années plus tard.
Bonne nouvelle : la plupart des méthodes Android pour modifier les bitmaps sont compatibles avec le format d'image Ultra HDR. Si vous apportez des modifications de base à une image, comme la recadrer ou la faire pivoter, les méthodes Android standards suffisent. Vous obtiendrez une image Ultra HDR avec les nouvelles dimensions ou la nouvelle orientation.
La tâche est plus délicate si vous modifiez le contenu de l'image. Dans ce cas, les méthodes de retouche standards conservent les informations de luminosité de l'ancienne image, ce qui n'est peut-être pas ce que vous souhaitez. Dans ce cas, vous devrez peut-être modifier ou supprimer la carte de gain (qui encode les informations de luminosité de l'image) pour obtenir le résultat souhaité.
Présentation du format Ultra HDR
Le format d'image Ultra HDR est décrit en détail dans les spécifications liées au format d'image Ultra HDR. La chose la plus importante à comprendre est qu'une image Ultra HDR contient à la fois une image principale et une carte de gain.
- L'image principale contient les informations de couleur de chaque pixel de l'image.
- La carte de gain est une image JPEG standard dont les proportions sont identiques à celles de l'image principale, mais pas nécessairement les dimensions en pixels. Chaque pixel de la carte de gain spécifie la luminance de la partie correspondante de l'image principale.
La carte de gain peut être en niveaux de gris ou en couleur. Si la carte de gain est en couleur, chaque canal de couleur de la carte de gain spécifie la luminance de ce canal de couleur sur la partie correspondante de l'image principale. Si la carte de gain est en niveaux de gris, chaque pixel de la carte de gain spécifie la luminance des trois canaux de couleur sur cette partie de l'image principale.
La carte de gain doit avoir les mêmes proportions que l'image principale, mais pas nécessairement les mêmes dimensions en pixels. En effet, lorsque la plate-forme Android crée des images Ultra HDR, elle crée une carte de gain dont la largeur et la hauteur sont inférieures à celles de l'image principale. Cela permet de réduire considérablement la taille du fichier, tout en encodant suffisamment d'informations pour obtenir un bon résultat. Cela signifie que chaque pixel de la carte de gain peut stocker les informations de luminance de plusieurs pixels de l'image principale.
Modifications Ultra HDR de base
Si vous utilisez les API Android Bitmap
pour effectuer des transformations de base sur une image Ultra HDR, les méthodes apportent les modifications appropriées à la carte de gain. Les opérations Bitmap
suivantes sont acceptées :
- Faire pivoter : si vous faites pivoter une image Ultra HDR, la méthode fait également pivoter la carte de gain.
- Recadrer : si vous recadrez une image Ultra HDR, la méthode recadre la carte de gain de manière appropriée.
- Mise à l'échelle : si vous mettez à l'échelle une image Ultra HDR, la méthode met à l'échelle la carte de gain de sorte qu'elle ait la moitié de la largeur et de la hauteur de l'image principale redimensionnée.
Dans chaque cas, les informations de luminosité sont conservées.
Modifications Ultra HDR avancées
Si vous apportez des modifications plus élaborées à une image Ultra HDR, la carte de gain est conservée telle quelle, ce qui peut ne pas vous donner les résultats souhaités.
Voici quelques exemples de modifications courantes pouvant entraîner cette situation :
- Ajout d'autocollants ou d'emojis : l'autocollant ajouté aurait les mêmes valeurs de luminosité et de vivacité des couleurs que la zone sur laquelle il a été collé.
- Superposition d'une deuxième image : la nouvelle image utiliserait les informations de luminosité et de vivacité des couleurs du contenu qu'elle recouvre.
- Ajout de filtres : les informations de l'ancienne carte de gain peuvent ne pas être appropriées pour l'image principale modifiée.
Dans chaque cas, les anciennes informations de luminosité et de vivacité des couleurs sont conservées, mais elles peuvent ne pas être adaptées à l'image modifiée.
Si la carte de gain d'origine est appropriée pour l'image modifiée, vous n'avez rien à faire. Si vous souhaitez modifier la carte de gain, le workflow habituel est le suivant :
- Récupérez la carte de gain actuelle de l'image en appelant
Bitmap.getGainmap()
et mettez-la en cache. - Modifiez l'image principale comme vous le souhaitez.
Apportez les modifications correspondantes à la carte de gain mise en cache. Par exemple, si vous avez collé un emoji sur l'image principale, vous pouvez définir la partie correspondante de la carte de gain sur une valeur neutre, comme
Color.GRAY
.Appliquez la cartographie du gain modifiée à l'image en appelant
Bitmap.setGainmap()
.
Ressources supplémentaires
Pour en savoir plus sur les images Ultra HDR, consultez les ressources supplémentaires suivantes :