O formato de imagem Ultra HDR codifica informações de luminosidade que permitem aos dispositivos mostrar imagens mais claras com cores mais intensas. Quando seu 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 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 vê-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 de 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 ter uma imagem em 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 ideal. Nesses casos, talvez seja necessário editar ou remover o mapa de ganho (que codifica as informações de luminosidade da imagem) para ter o resultado certo.
Visão geral do formato Ultra HDR
O formato de imagem Ultra HDR é descrito em detalhes na especificação de imagem Ultra HDR. O mais importante a 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.
- 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 especifica a luminância daquele canal na parte correspondente da imagem principal. Se o mapa de ganho for em escala de cinza, cada pixel vai especificar a luminância de todos os 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 as mesmas dimensões de pixel. Na verdade, quando a plataforma Android cria imagens Ultra HDR, ela cria um mapa de ganho com uma largura e uma 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 de Ultra HDR
Se você usar as APIs Bitmap
do Android para fazer
transformações básicas em uma imagem Ultra HDR, os métodos farão as mudanças
apropriadas 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.
- Corte:se você cortar uma imagem Ultra HDR, o método vai cortar o mapa de ganho de maneira adequada.
- 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 de Ultra HDR
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 dar os resultados desejados.
Algumas edições comuns que podem resultar nessa situação incluem:
- Adicionar adesivos ou emojis:o adesivo adicionado teria os mesmos valores de luminosidade e vivacidade de cor da área em que foi colado.
- Sobreposição de uma segunda imagem:a nova imagem usaria as informações de luminosidade e vivacidade de cor do conteúdo que está sendo sobreposto.
- Adicionar 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 intensidade da 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, não será necessário fazer nada. Se você não quiser modificar o mapa de ganho, o fluxo de trabalho normal é:
- Busque o mapa de ganho atual da imagem chamando
Bitmap.getGainmap()
e armazene em cache. - Modifique a imagem principal como quiser.
Faça as edições correspondentes no mapa de ganho armazenado 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
.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: