Modifica immagini Ultra HDR

Il formato immagine Ultra HDR codifica le informazioni sulla luminosità che consentono ai dispositivi di mostrare immagini più luminose con colori più intensi. Quando l'app modifica un'immagine Ultra HDR, assicurati di preservare le informazioni sulla luminosità. Ciò è importante anche se il dispositivo dell'utente non supporta la visualizzazione di un'immagine Ultra HDR alla massima intensità. Dopotutto, l'utente potrebbe condividere la propria immagine con qualcuno che dispone di un dispositivo che supporta Ultra HDR oppure potrebbe salvare l'immagine e guardarla di nuovo su un nuovo dispositivo anni dopo.

La buona notizia è che la maggior parte dei metodi Android per la modifica dei bitmap supporta il formato immagine Ultra HDR. Se stai apportando modifiche di base a un'immagine, ad esempio ritagliarla o ruotarla, lo fanno i metodi standard di Android: ti ritroverai con un'immagine ultra HDR con le nuove dimensioni o il nuovo orientamento.

Il lavoro è più difficile se modifichi i contenuti dell'immagine. In questi casi, i metodi di modifica standard conservano le informazioni sulla luminosità dell'immagine vecchia, che potrebbe non essere ciò che vuoi. In questi casi, potrebbe essere necessario modificare o rimuovere la mappa di guadagno (che codifica le informazioni sulla luminosità dell'immagine) per ottenere il risultato corretto.

Panoramica del formato Ultra HDR

Il formato dell'immagine Ultra HDR è descritto in dettaglio nella specifica Ultra HDR Image. La cosa più importante da capire è che un'immagine Ultra HDR contiene sia un'immagine principale sia una mappa guadagno.

  • L'immagine principale contiene le informazioni sul colore di ogni pixel dell'immagine.
  • Una mappa di guadagno è un'immagine JPEG standard con le stesse proporzioni dell'immagine principale, sebbene non necessariamente le stesse dimensioni in pixel. Ogni pixel della mappa di guadagno specifica la luminanza della parte corrispondente dell'immagine principale.

La mappa di guadagno può essere in scala di grigi o a colori. Se la mappa di guadagno è a colori, ogni canale di colore sulla mappa specifica la luminanza di quel canale di colore nella parte corrispondente dell'immagine principale. Se la mappa del guadagno è in scala di grigi, ogni pixel della mappa del guadagno specifica la luminanza di tutti e tre i canali colore su quella parte dell'immagine principale.

La mappa di guadagno deve avere le stesse proporzioni dell'immagine principale, ma non deve avere le stesse dimensioni in pixel. Infatti, quando la piattaforma Android crea immagini Ultra HDR, viene creata una mappa di guadagno con larghezza e altezza inferiori rispetto all'immagine principale. In questo modo le dimensioni del file si riducono molto, ma vengono comunque codificate informazioni sufficienti per ottenere un buon risultato. Ciò significa che ogni pixel nella mappa di guadagno potrebbe memorizzare le informazioni sulla luminanza per diversi pixel nell'immagine principale.

Modifiche di base in Ultra HDR

Se utilizzi le API Android Bitmap per effettuare trasformazioni di base a un'immagine Ultra HDR, i metodi apportano le modifiche appropriate alla mappa di guadagno. Sono supportate le seguenti operazioni Bitmap:

  • Ruota: se ruoti un'immagine Ultra HDR, il metodo ruota anche la mappa di guadagno.
  • Ritaglia: se ritagli un'immagine Ultra HDR, il metodo ritaglia la mappa di guadagno in modo appropriato.
  • Scala: se ridimensioni un'immagine Ultra HDR, il metodo scala la mappa di guadagno in modo che abbia metà della larghezza e metà dell'altezza dell'immagine principale ridimensionata.

In ciascun caso, le informazioni sulla luminosità vengono conservate.

Modifiche avanzate in Ultra HDR

Se apporti modifiche più elaborate a un'immagine Ultra HDR, la mappa del guadagno rimane invariata e potrebbe non restituire i risultati desiderati.

Le modifiche comuni che potrebbero comportare questa situazione includono:

  • Aggiunta di adesivi o emoji:l'adesivo aggiunto avrà gli stessi valori di luminosità e vividezza dei colori dell'area su cui è stato incollato.
  • Sovrapposizione di una seconda immagine: la nuova immagine userebbe le informazioni sulla luminosità e sulla vividezza dei colori dei contenuti sovrapposti.
  • Aggiunta di filtri: le informazioni della mappa di guadagno precedente potrebbero non essere appropriate per l'immagine principale modificata.

In ogni caso, vengono mantenute le vecchie informazioni sulla luminosità e sulla nitidezza dei colori, ma potrebbero non essere appropriate per l'immagine modificata.

Se la mappa di guadagno originale è appropriata per l'immagine modificata, non devi fare nulla. Se vuoi modificare la mappa di guadagno, il normale flusso di lavoro è:

  1. Recupera la mappa di guadagno attuale dell'immagine chiamando Bitmap.getGainmap() e memorizzala nella cache.
  2. Modifica l'immagine principale come preferisci.
  3. Apporta le modifiche corrispondenti alla mappa di guadagno memorizzata nella cache. Ad esempio, se hai incollato un'emoji nell'immagine principale, potresti impostare la porzione corrispondente della mappa di guadagno su un valore neutro, ad esempio Color.GRAY.

  4. Applica la mappa di guadagno modificata all'immagine chiamando Bitmap.setGainmap().

Risorse aggiuntive

Per ulteriori informazioni sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive: