O formato de imagem Ultra HDR codifica informações de luminosidade que permitem que os dispositivos mostrem imagens mais brilhantes com cores mais intensas. Quando seu app edita uma imagem Ultra HDR, é importante preservar essas informações de luminosidade. Isso é importante mesmo que o dispositivo do usuário não ofereça suporte à exibição de uma imagem Ultra HDR com 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 visualizá-la novamente em um novo dispositivo anos depois.
A boa notícia é que a maioria dos métodos do Android para editar bitmaps oferece suporte ao 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 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 obter o resultado correto.
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 da imagem.
- O mapa de ganho é uma imagem JPEG padrão com as mesmas proporções da imagem principal, embora 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 tons de cinza ou colorido. Se o mapa de ganho for colorido, cada canal de cor no mapa de ganho especifica a luminância desse canal de cor na parte correspondente da imagem principal. Se o mapa de ganho for em tons de cinza, cada pixel do mapa de ganho especifica 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 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 uma largura e altura menores que a imagem principal. Isso torna o tamanho do arquivo significativamente menor, 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 do 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 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.
- Escalar:se você escalar uma imagem Ultra HDR, o método vai escalar 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 do 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 gerar os resultados desejados.
As 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.
- Sobrepor uma segunda imagem:a nova imagem usaria as informações de luminosidade e vivacidade de cor do conteúdo que está sobrepondo.
- 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 de luminosidade e vivacidade de cor antigas 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ê quiser modificar o mapa de ganho, o fluxo de trabalho normal será:
- Buscar o mapa de ganho atual da imagem chamando
Bitmap.getGainmap()e armazená-lo em cache. - Modificar a imagem principal conforme desejado.
Fazer 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 Ultra HDR, consulte os seguintes recursos adicionais: