Editar imagens Ultra HDR

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

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

A tarefa será mais complicada se você modificar o conteúdo da imagem. Nesses casos, os métodos padrão de edição preservam as informações de luminosidade da imagem antiga, o que pode não ser o que você quer. Nesses casos, pode ser necessário editar ou remover o mapa de ganho (que codifica as informações de luminosidade da imagem) para conseguir o resultado correto.

Visão geral do formato Ultra HDR

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

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

O mapa de ganho pode estar em escala de cinza ou colorido. Se o mapa de ganho estiver colorido, cada canal de cores no mapa vai especificar a luminosidade desse canal de cores na parte correspondente da imagem principal. Se o mapa de ganho estiver em escala de cinza, cada pixel dele especificará a luminosidade dos três canais de cores nessa parte da imagem principal.

O mapa de ganhos precisa ter as mesmas proporções da imagem principal, mas não precisa ter as mesmas dimensões em pixels. Na verdade, quando a plataforma Android cria imagens em Ultra HDR, ela gera um mapa de ganho com largura e altura menores do que a imagem principal. Fazer isso diminui o tamanho do arquivo significativamente, 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 Ultra HDR básicas

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 Bitmap têm suporte:

  • Girar:se você girar uma imagem Ultra HDR, o método também vai girar o mapa de ganho.
  • Crop: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 Ultra HDR avançadas

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

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

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

Em cada caso, as informações antigas de luminosidade e vitalidade de cor 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 precisa fazer nada. Se você quer modificar o mapa de ganhos, 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 edições correspondentes no mapa de ganhos em cache. Por exemplo, se você colou um emoji na imagem principal, poderá definir a parte correspondente do mapa de ganho como um valor neutro, como Color.GRAY.

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

Outros recursos

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