Modifier des images Ultra HDR

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 conserver ces informations sur la 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é. Après tout, l'utilisateur peut partager son image avec quelqu'un qui possède un appareil compatible avec Ultra HDR, ou l'enregistrer et la consulter à nouveau sur un nouvel appareil des années plus tard.

La bonne nouvelle est que la plupart des méthodes Android permettant de modifier 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 l'affaire. Vous obtiendrez une image ultra HDR avec les nouvelles dimensions ou l'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 bon résultat.

Présentation du format Ultra HDR

Le format d'image Ultra HDR est décrit en détail dans la spécification d'image Ultra HDR. L'essentiel à retenir 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 pour chaque pixel de l'image.
  • La carte de gain est une image JPEG standard ayant 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 avec une largeur et une hauteur inférieures à celles de l'image principale. Cela réduit considérablement la taille du fichier, mais encode toujours 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:

  • Rotation: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.
  • Échelle:si vous mettez à l'échelle une image Ultra HDR, la méthode met à l'échelle la carte de gain afin qu'elle ait la moitié de la largeur et de la hauteur de l'image principale redimensionnée.

Dans tous les cas, les informations sur la luminosité sont conservées.

Modifications avancées Ultra HDR

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é 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 sur la luminosité et la vivacité des couleurs du contenu qu'elle superpose.
  • Ajout de filtres:les informations de l'ancienne carte de gain peuvent ne pas être adaptées à l'image principale modifiée.

Dans chaque cas, les anciennes informations sur la luminosité et la 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 adaptée à l'image modifiée, vous n'avez rien à faire. Si vous voulez modifier la carte de gain, le workflow habituel est le suivant:

  1. Récupérez la carte de gain actuelle de l'image en appelant Bitmap.getGainmap() et mettez-la en cache.
  2. Modifiez l'image principale si vous le souhaitez.
  3. 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.

  4. Appliquez à nouveau 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: