Modifica immagini Ultra HDR

Il formato dell'immagine 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 la propria immagine con qualcuno che ha un dispositivo che supporta Ultra HDR o potrebbe salvarla 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, ad esempio ritagliandola o ruotandola, i metodi standard di Android sono sufficienti: otterrai un'immagine ultra HDR con le nuove dimensioni o l'orientamento.

Il processo è più complicato se stai modificando i contenuti dell'immagine. In questi casi, i metodi di modifica standard conservano le informazioni sulla luminosità dell'immagine precedente, il 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 giusto.

Panoramica del formato Ultra HDR

Il formato delle immagini Ultra HDR è descritto in dettaglio nella specifica Immagine 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 sul colore per ogni pixel dell'immagine.
  • La mappa del guadagno è un'immagine JPEG standard con le stesse proporzioni dell'immagine principale, ma non necessariamente le stesse dimensioni in pixel. Ogni pixel della mappa del guadagno specifica la luminanza della parte corrispondente dell'immagine principale.

La mappa del guadagno può essere in scala di grigi o a colori. Se la mappa del guadagno è a colori, ogni canale di colore della mappa del guadagno 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 di colore su la parte dell'immagine principale.

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

Modifiche Ultra HDR di base

Se utilizzi le API Android Bitmap 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 del guadagno.
  • Ritaglio:se ritaglie 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 Ultra HDR

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

Le modifiche comuni che potrebbero comportare questa situazione includono:

  • Aggiunta di adesivi o emoji: l'adesivo aggiunto avrà gli stessi valori di luminosità e vivacità del colore dell'area in cui è stato incollato.
  • Sovrapposizione di una seconda immagine:la nuova immagine utilizza le informazioni relative alla luminosità e alla vividezza del colore dei contenuti a cui si sovrappone.
  • Aggiunta di filtri: le informazioni della vecchia mappa di guadagno potrebbero non essere appropriate per l'immagine principale modificata.

In ogni caso, vengono conservate le informazioni relative a luminosità e vividezza del colore precedenti, 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 del guadagno, il flusso di lavoro abituale è:

  1. Recupero la mappa del 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 del guadagno memorizzata nella cache. Ad esempio, se hai incollato un'emoji sull'immagine principale, puoi impostare la parte corrispondente della mappa di guadagno su un valore neutro, ad esempio Color.GRAY.

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

Risorse aggiuntive

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