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à. Ciò è importante anche se il dispositivo dell'utente non supporta la visualizzazione di un'immagine Ultra HDR a piena intensità. Dopo tutto, l'utente potrebbe condividere la sua immagine con qualcuno che ha un dispositivo che supporta Ultra HDR oppure potrebbe salvare l'immagine e rivederla 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 standard di Android sono sufficienti: otterrai 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, il che potrebbe non essere quello che vuoi. In questi casi, potresti dover modificare o rimuovere la mappa del 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 nelle specifiche dell'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 dei guadagni è un'immagine JPEG standard con le stesse proporzioni dell'immagine principale, anche se 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 colore specifica la luminanza di quel canale colore nella parte corrispondente dell'immagine principale. Se la mappa del guadagno è in scala di grigi, ogni pixel specifica la luminanza di tutti e tre i canali di colore in quella porzione dell'immagine principale.
La mappa del 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 larghezza e 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 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 del guadagno. Sono supportate le seguenti operazioni Bitmap
:
- Ruota:se ruoti un'immagine Ultra HDR, il metodo ruota anche la mappa del guadagno.
- Ritaglio:se ritagli un'immagine Ultra HDR, il metodo ritaglia la mappa del guadagno in modo appropriato.
- Scala:se ridimensioni un'immagine Ultra HDR, il metodo ridimensiona la mappa del 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 in Ultra HDR
Se apporti modifiche più elaborate a un'immagine Ultra HDR, la mappa del guadagno viene mantenuta invariata, il che potrebbe non darti i risultati che desideri.
Le modifiche comuni che potrebbero causare 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 utilizzerebbe le informazioni sulla luminosità e sulla vivacità del colore dei contenuti sovrapposti.
- Aggiunta di filtri:le informazioni della vecchia mappa del guadagno potrebbero non essere appropriate per l'immagine principale modificata.
In ogni caso, le informazioni precedenti su luminosità e vivacità del colore vengono conservate, ma potrebbero non essere appropriate per l'immagine modificata.
Se la mappa del guadagno originale è appropriata per l'immagine modificata, non devi fare nulla. Se vuoi modificare la mappa del guadagno, il flusso di lavoro abituale è:
- Recupera la mappa di guadagno corrente dell'immagine chiamando
Bitmap.getGainmap()
e memorizzala nella cache. - Modifica l'immagine principale come preferisci.
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
.Applica nuovamente la mappa del guadagno modificata all'immagine chiamando
Bitmap.setGainmap()
.
Risorse aggiuntive
Per scoprire di più sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive: