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 vous assurer de préserver ces informations de luminosité. Cela est important même si l'appareil de l'utilisateur n'est pas compatible avec l'affichage d'une image Ultra HDR à pleine intensité. En effet, l'utilisateur peut partager son image avec une personne disposant d'un appareil compatible avec l'Ultra HDR, ou enregistrer cette image et la regarder à nouveau sur un nouvel appareil des années plus tard.
La bonne nouvelle, c'est que la plupart des méthodes Android de modification des 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 font le travail. Vous obtiendrez une image Ultra HDR avec les nouvelles dimensions ou la nouvelle orientation.
La tâche est plus complexe si vous modifiez le contenu de l'image. Dans ce cas, les méthodes de modification 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 Ultra HDR Image spécifications. Il est important de comprendre 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 avec les mêmes proportions que l'image principale, mais pas nécessairement les mêmes 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 fait, 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 réduit 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 Bitmap Android pour apporter
des transformations de base à une image Ultra HDR, les méthodes apportent les modifications appropriées
à la carte de gain. Les opérations Bitmap suivantes sont compatibles :
- Rotation : si vous faites pivoter une image Ultra HDR, la méthode fait également pivoter la carte de gain.
- Recadrage : 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 la moitié 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 sans modification, ce qui peut ne pas vous donner les résultats souhaités.
Voici quelques modifications courantes qui peuvent entraîner cette situation :
- Ajout d'autocollants ou d'emojis : l'autocollant ajouté aura 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 utilisera 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 appropriées pour 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 carte de 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 :