Modifica immagini Ultra HDR

Il formato delle immagini Ultra HDR codifica le informazioni sulla luminosità che consentono ai dispositivi di visualizzare immagini più luminose con colori più intensi. Quando la tua app modifica un'immagine Ultra HDR, devi assicurarti di preservare le informazioni sulla luminosità. Questo è importante anche se il dispositivo dell'utente non supporta la visualizzazione di un'immagine Ultra HDR a piena intensità. Dopotutto, l'utente potrebbe condividere l'immagine con qualcuno che ha 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 delle bitmap supporta il formato delle immagini Ultra HDR. Se apporti modifiche di base a un'immagine, come ritagliarla o ruotarla, i metodi Android standard fanno al caso tuo: otterrai un'immagine Ultra HDR con le nuove dimensioni o il nuovo orientamento.

Il lavoro è più complicato se modifichi i contenuti dell'immagine. In questi casi, i metodi di modifica standard conservano le informazioni sulla luminosità della vecchia immagine, il che potrebbe non essere quello che vuoi. In questi casi, potresti dover 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 delle immagini Ultra HDR è descritto in dettaglio nelle specifiche delle immagini Ultra HDR. La cosa più importante da capire è che un'immagine Ultra HDR contiene sia un'immagine principale sia una mappa di guadagno.

  • L'immagine principale contiene le informazioni sui colori per ogni pixel dell'immagine.
  • La mappa di guadagno è un'immagine JPEG standard con le stesse proporzioni dell'immagine principale, anche se 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 della mappa di guadagno specifica la luminanza di quel canale di colore nella parte corrispondente dell'immagine principale. Se la mappa di guadagno è in scala di grigi, ogni pixel della mappa di guadagno specifica la luminanza di tutti e tre i canali di colore in 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, crea una mappa di guadagno con una larghezza e un'altezza inferiori rispetto all'immagine principale. In questo modo, le dimensioni del file sono notevolmente inferiori, ma vengono comunque codificate informazioni sufficienti per un buon risultato. Ciò significa che ogni pixel della mappa di guadagno potrebbe memorizzare le informazioni sulla luminanza per più pixel dell'immagine principale.

Modifiche di base di Ultra HDR

Se utilizzi le API Bitmap di Android per apportare 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 ridimensiona la mappa di guadagno in modo che abbia metà della larghezza e metà dell'altezza dell'immagine principale ridimensionata.

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

Modifiche avanzate di Ultra HDR

Se apporti modifiche più elaborate a un'immagine Ultra HDR, la mappa di guadagno viene conservata invariata, il che potrebbe non darti i risultati desiderati.

Le modifiche comuni che potrebbero portare a questa situazione includono:

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

In ogni caso, le vecchie informazioni sulla luminosità e la vivacità dei colori vengono conservate, 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 flusso di lavoro abituale è il seguente:

  1. Recupera la mappa di guadagno corrente 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 sull'immagine principale, potresti impostare la parte corrispondente della mappa di guadagno su un valore neutro, come Color.GRAY.

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

Risorse aggiuntive

Per scoprire di più sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive: