Modifier des images Ultra HDR

Le format d'image Ultra HDR encode des informations sur la luminosité qui permet 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 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 en 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, 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 (par exemple, en la recadrant ou en la faisant pivoter), les méthodes Android standards fonctionnent. Vous obtiendrez alors 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 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 des images Ultra HDR. Il est essentiel 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 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 nuances de gris ou en couleur. Si la carte de gain est en couleur, chaque canal de couleur sur 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 cette carte 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 à l'image principale. Cela réduit considérablement la taille du fichier, tout en encodeant 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 dans l'image principale.

Retouches Ultra HDR de base

Si vous utilisez les API Bitmap Android 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 prises en charge:

  • Rotation:si vous faites pivoter une image Ultra HDR, cette méthode fait également pivoter la carte de gain.
  • Recadrer:si vous recadrez une image Ultra HDR, la méthode recadre correctement la carte de gain.
  • Mise à l'échelle:si vous mettez à l'échelle une image Ultra HDR, la méthode redimensionne la carte de gain pour qu'elle occupe 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.

Retouches 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 escomptés.

Voici quelques modifications courantes pouvant entraîner cette situation:

  • Ajouter des autocollants ou des emoji: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 utilise les informations de luminosité et de vivacité des couleurs du contenu sur lequel elle est superposée.
  • 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 préservé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 voulez modifier la carte de gain, procédez comme suit:

  1. Récupérez la carte de gains actuelle de l'image en appelant Bitmap.getGainmap() et en la mettant en cache.
  2. Modifiez l'image principale comme 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 du mappage de gain sur une valeur neutre, comme Color.GRAY.

  4. 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: