Estou tendo um problema com a maneira como o Photoshop lida com pixels completamente transparentes ao exportar como PNG, que é o de que os canais de cores vermelho, verde e azul de qualquer pixel completamente transparente são salvos como 0 em vez da cor definida no Photoshop .
Por exemplo: eu tenho um arquivo PSD com uma máscara de camada. Algumas partes coloridas da imagem são completamente transparentes pela máscara de camada, mas ainda quero que os canais de cores originais sejam gravados no arquivo PNG em vez de apenas 0.
(Sim, o formato PNG em si faz contêm dados RGB mesmo para pixels totalmente transparentes. Este é um problema com o Photoshop, não PNG).
Se você está se perguntando por que os dados em cores são importantes quando um pixel é completamente transparente, veja alguns casos de uso:
- O PNG está sendo amostrado em uma resolução mais alta do que é salvo e os valores amostrados são interpolados entre os pixels vizinhos. Isso pode resultar em um "halo" preto fraco ao redor da imagem se a interpolação não for ponderada pela transparência. (No meu caso, essa amostragem está sendo feita na GPU, o que, por razões de desempenho, não pesa na transparência.)
- Os canais vermelho, verde, azul e alfa no arquivo PNG estão sendo usados para outros fins que não o armazenamento de informações de cores. (No meu caso, eu uso todos os quatro canais para armazenar dados necessários para cálculos de iluminação em tempo real.)
Obrigado pela ajuda!
EDITAR
Vou tentar explicar o problema que estou tendo com o uso de alguns recursos visuais. Mostrar coisas transparentes é difícil, mas espero que isso esclareça o meu problema:
Eu tenho um arquivo PSD com uma camada e uma máscara de camada. A camada de cores fica assim:
Sua máscara de camada fica assim:
Se eu exportar esse arquivo PSD como PNG, recebo o seguinte:
(As regiões brancas são realmente transparentes; elas apenas parecem brancas contra o fundo branco.)
Você pode estar se perguntando: qual é o problema? Parece certo! Bem, o problema está nas informações de cores armazenadas nesses pixels transparentes. Usando uma ferramenta para remover os dados de opacidade do PNG e deixar o RGB intacto, podemos ver as informações de cores que o Photoshop salva nos pixels transparentes:
Como você pode ver, o Photoshop substituiu as informações de cores nos pixels transparentes por preto. Considerando que, com os dados de opacidade removidos do PNG, quero que ele se pareça exatamente com a camada de cores original: