Modifier des images Ultra HDR

Le format d'image Ultra HDR encode les 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, veillez à conserver ces informations de luminosité. Cette étape est importante 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 enregistrer cette image et la regarder à nouveau sur un nouvel appareil des années plus tard.

La bonne nouvelle est que la plupart des méthodes Android de modification de bitmaps sont compatibles avec le format d'image Ultra HDR. Si vous apportez des modifications de base à une image, par exemple en la recadrant ou en la faisant pivoter, les méthodes Android standards font le travail. Vous vous retrouverez alors avec une image ultra-HDR avec les nouvelles dimensions ou orientations.

La tâche est plus délicate 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 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. Il est essentiel de comprendre qu'une image Ultra HDR contient à la fois une image principale et un carte des points.

  • L'image principale contient les informations sur les couleurs de chaque pixel de l'image.
  • Le gain map 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 du gain peut être en nuances de gris ou en couleurs. 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 nuances 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 ses dimensions en pixels ne sont pas nécessairement les mêmes. 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 tout de même 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 pour plusieurs pixels dans l'image principale.

Retouches 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 du 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.
  • Recadrer:si vous recadrez une image Ultra HDR, la méthode recadre correctement la carte du gain.
  • Scale (Mise à l'échelle) : si vous mettez à l'échelle une image Ultra HDR, la méthode redimensionne la carte de gain pour qu'elle atteigne 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.

Retouches Ultra HDR avancées

Si vous apportez des modifications plus élaborées à une image Ultra HDR, la carte de gain n'est pas modifiée, ce qui peut ne pas vous donner les résultats souhaités.

Voici des modifications courantes qui pourraient entraîner cette situation:

  • Ajouter des autocollants ou des emoji: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 utilisera les informations de luminosité et de vivacité des couleurs du contenu qu'elle superpose.
  • 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 sur la luminosité et la 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 adaptée à l'image modifiée, vous n'avez rien à faire. Si vous voulez modifier la carte de gain, procédez comme suit:

  1. Récupérez la carte de gain actuelle de l'image en appelant Bitmap.getGainmap() et en la mettant en cache.
  2. Modifiez l'image principale à votre guise.
  3. Apportez les modifications correspondantes à la carte des gains mis 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. Ré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: