O formato de imagem Ultra HDR codifica informações de luminosidade que permite que os dispositivos mostrem imagens mais brilhantes com cores mais intensas. Quando o app edita uma imagem Ultra HDR, é preciso preservar essa informação de luminosidade. Isso é importante mesmo que o dispositivo do usuário não ofereça suporte à exibição de uma imagem Ultra HDR na intensidade máxima. Afinal, o usuário pode compartilhar a imagem com alguém que tenha um dispositivo com suporte a 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 edição de 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 fazer o trabalho. Você vai ter 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, 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 ter 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 é 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 com as mesmas dimensões em pixels. 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 estiver em cores, 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 escala de cinza, cada pixel do mapa de ganho especifica a luminância dos três canais de cores nessa parte da imagem principal.
O mapa de ganho precisa ter as mesmas proporções que a imagem principal, mas não precisa ter as mesmas dimensões em pixels. Na verdade, quando a plataforma Android cria imagens Ultra HDR, ela cria um mapa de ganho com uma largura e altura menores do 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 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 Bitmap
são compatíveis:
- Girar:se você girar uma imagem Ultra HDR, o método também gira o mapa de ganho.
- Recorte:se você recortar uma imagem Ultra HDR, o método vai recortar o mapa de ganho adequadamente.
- Escala:se você dimensionar uma imagem Ultra HDR, o método 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 alterações, o que pode não gerar os resultados esperados.
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 nitidez da cor que a á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 nitidez de cor são preservadas, mas podem não ser apropriadas para a imagem modificada.
Se o mapa de ganho original for adequado para a imagem editada, você não precisará fazer nada. Se você quer modificar o mapa de ganho, o fluxo de trabalho normal é:
- Acesse o mapa de ganho atual da imagem chamando
Bitmap.getGainmap()
e armazene em cache. - Modifique a imagem principal conforme necessário.
Faça as edições correspondentes no mapa de ganho 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
.Aplique o mapa de ganho modificado de volta à imagem chamando
Bitmap.setGainmap()
.
Outros recursos
Para saber mais sobre imagens Ultra HDR, consulte os recursos abaixo: