Editar imagens Ultra HDR

O formato da imagem Ultra HDR codifica informações de luminosidade que permitem que os dispositivos mostrem imagens mais brilhantes com cores mais intensas. Quando o app edita uma imagem Ultra HDR, é importante preservar essas informações de luminosidade. Isso é importante mesmo que o dispositivo do usuário não seja compatível com a exibição de uma imagem Ultra HDR em intensidade total. Afinal, o usuário pode compartilhar a imagem com alguém que tenha um dispositivo compatível com Ultra HDR ou salvar a imagem e acessá-la novamente em um novo dispositivo anos depois.

A boa notícia é que a maioria dos métodos do Android para editar bitmaps é compatível com o formato da imagem Ultra HDR. Se você estiver fazendo edições básicas em uma imagem, como cortar ou girar, os métodos padrão do Android vão funcionar. Você vai acabar com uma imagem Ultra HDR com as novas dimensões ou orientação.

O trabalho é mais complicado se você estiver modificando o conteúdo da imagem. Nesses casos, os métodos de edição padrão preservam as informações de luminosidade da imagem antiga, o que pode não ser o que você quer. Nesses casos, talvez seja necessário editar ou remover o mapa de ganho (que codifica as informações de luminosidade da imagem) para conseguir o resultado certo.

Visão geral do formato Ultra HDR

O formato da imagem Ultra HDR é descrito em detalhes na especificação de imagem Ultra HDR. O mais importante é entender que uma imagem Ultra HDR contém uma imagem principal e um mapa de ganho.

  • A imagem principal tem as informações de cor de cada pixel da imagem.
  • O mapa de ganho é uma imagem JPEG padrão com as mesmas proporções da imagem principal, mas não necessariamente as mesmas dimensões de pixel. Cada pixel do mapa de ganho especifica a luminância da parte correspondente da imagem principal.

O mapa de ganho pode ser em escala de cinza ou colorido. Se o mapa de ganho for colorido, cada canal de cor nele vai especificar a luminância desse canal de cor na parte correspondente da imagem principal. Se o mapa de ganho estiver em escala de cinza, cada pixel dele vai especificar a luminância dos três canais de cor nessa parte da imagem principal.

O mapa de ganho precisa ter as mesmas proporções da imagem principal, mas não precisa ter as mesmas dimensões de pixel. Na verdade, quando a plataforma Android cria imagens Ultra HDR, ela cria um mapa de ganho com largura e altura menores do que a imagem principal. Isso reduz significativamente o tamanho do arquivo, mas ainda codifica informações suficientes para um bom resultado. Isso significa que cada pixel no mapa de ganho pode armazenar as informações de luminância de vários pixels na imagem principal.

Edições básicas em Ultra HDR

Se você usar as APIs Bitmap do Android para fazer transformações básicas em uma imagem Ultra HDR, os métodos vão fazer as mudanças adequadas no mapa de ganho. As seguintes operações de Bitmap são compatíveis:

  • Girar:se você girar uma imagem Ultra HDR, o método também vai girar o mapa de ganho.
  • Cortar:se você cortar uma imagem Ultra HDR, o método vai cortar o mapa de ganho adequadamente.
  • Escala:se você dimensionar uma imagem Ultra HDR, o método vai dimensionar o mapa de ganho para que ele tenha metade da largura e metade da altura da imagem principal redimensionada.

Em cada caso, as informações de luminosidade são preservadas.

Edições avançadas em Ultra HDR

Se você fizer edições mais elaboradas em uma imagem Ultra HDR, o mapa de ganho será preservado sem mudanças, o que pode não gerar os resultados desejados.

As edições comuns que podem resultar nessa situação incluem:

  • Adicionar adesivos ou emojis:o adesivo adicionado terá os mesmos valores de luminosidade e intensidade de cor da área em que foi colado.
  • Sobreposição de uma segunda imagem:a nova imagem usaria as informações de luminosidade e intensidade de cor do conteúdo que está sendo sobreposto.
  • Adição de filtros:as informações do mapa de ganho antigo podem não ser adequadas para a imagem principal modificada.

Em cada caso, as informações antigas de luminosidade e vivacidade de cores são preservadas, mas podem não ser adequadas para a imagem modificada.

Se o mapa de ganho original for adequado para a imagem editada, você não precisará fazer nada. Se você quiser modificar o mapa de ganho, o fluxo de trabalho comum é:

  1. Busque o mapa de ganho atual da imagem chamando Bitmap.getGainmap() e armazene-o em cache.
  2. Modifique a imagem principal como quiser.
  3. Faça as edições correspondentes no mapa de ganho em cache. Por exemplo, se você colou um emoji na imagem principal, defina a parte correspondente do mapa de ganho como um valor neutro, como Color.GRAY.

  4. Aplique o mapa de ganho modificado de volta à imagem chamando Bitmap.setGainmap().

Outros recursos

Para saber mais sobre imagens em Ultra HDR, consulte os seguintes recursos: