Sto riscontrando un problema con il modo in cui Photoshop gestisce i pixel completamente trasparenti quando si esporta come PNG, ovvero che i canali di colore rosso, verde e blu di tutti i pixel completamente trasparenti vengono salvati come 0 anziché il colore che definisco in Photoshop .
Ad esempio: ho un file PSD con una maschera di livello. Alcune parti colorate dell'immagine sono rese completamente trasparenti dalla maschera di livello, ma voglio comunque che i canali di colore originali vengano scritti nel file PNG anziché solo 0.
(Sì, il formato PNG in sé non contiene i dati RGB anche per pixel completamente trasparenti. Questo è un problema con Photoshop, non PNG.)
Se ti stai chiedendo perché avere dati a colori è importante quando un pixel è completamente trasparente, ecco un paio di casi d'uso:
- Il PNG viene campionato a una risoluzione più alta rispetto a quando viene salvato e i valori campionati vengono interpolati tra i pixel vicini. Ciò può comportare un leggero "alone" nero attorno all'immagine se l'interpolazione non è ponderata dalla trasparenza. (Nel mio caso, questo up-sampling viene eseguito sulla GPU, che per motivi di prestazioni non pesa per la trasparenza.)
- I canali rosso, verde, blu e alfa nel file PNG vengono utilizzati per scopi diversi dalla memorizzazione delle informazioni sul colore. (Nel mio caso, utilizzo tutti e quattro i canali per memorizzare i dati necessari per i calcoli dell'illuminazione in tempo reale.)
Grazie per l'aiuto!
MODIFICARE
Proverò a spiegare il problema che sto riscontrando con l'uso di alcuni ausili visivi. Mostrare cose trasparenti è difficile, ma speriamo che questo chiarisca il mio problema:
Ho un file PSD con un livello e una maschera di livello. Il livello di colore è simile al seguente:
La sua maschera di livello è simile alla seguente:
Se esporto questo file PSD come PNG, ottengo questo:
(Le regioni bianche sono davvero trasparenti; sembrano solo bianche contro lo sfondo bianco.)
Ti starai chiedendo: qual è il problema? Sembra giusto! Bene, il problema è con le informazioni sul colore memorizzate in quei pixel trasparenti. Usando uno strumento per rimuovere i dati di opacità dal PNG lasciando intatto il RGB, possiamo vedere le informazioni sul colore che Photoshop salva nei pixel trasparenti:
Come puoi vedere, Photoshop ha sostituito le informazioni sul colore nei pixel trasparenti con il nero. Considerando che, con i dati di opacità rimossi dal PNG, voglio che assomigli esattamente al livello di colore originale: