Como digo ao Photoshop para preservar a cor RGB de pixels totalmente transparentes ao exportar como PNG?

12

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:

insira a descrição da imagem aqui

Sua máscara de camada fica assim:

insira a descrição da imagem aqui

Se eu exportar esse arquivo PSD como PNG, recebo o seguinte:

insira a descrição da imagem aqui

(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:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

Walt D
fonte
Mostrar um exemplo do que você está enfrentando pode ser mais útil. Principalmente porque, não deve haver nenhuma informação de cor na parte transparente do PNG. Como você está salvando o PNG? Você está usando "Salvar para a Web" e a "transparência" marcada? Sei que parece básico, mas não tenho certeza de como você está obtendo seus resultados.
ErickP
Sim, não publiquei imagens de exemplo porque você não consegue ver o problema (sem carregar o PNG em um programa de pintura e desativar a transparência), pois o problema é apenas com pixels totalmente transparentes. Vou ver se consigo encontrar uma maneira de visualizar do que estou falando.
Walt D
Mas quando você diz "não deve haver nenhuma informação de cor na parte transparente do PNG", na verdade, quero que haja informações de cor na parte transparente do PNG. Eu sei que isso soa estranho, mas existem certos aplicativos, como os dois que mencionei acima. (E sim, PNG suporta totalmente informações de cor em suas regiões transparentes; eu usá-lo o tempo todo em PNGs processualmente geradas A questão é com a forma como Photoshop salva regiões transparentes para PNGs..)
Walt D
1
@ DA01 Não acho que seja um bug, mas uma otimização que o Photoshop faz (PNGs com cores uniformes ocupam menos espaço em disco) que está quebrando meu caso de uso específico.
Walt D
1
@ ErickP Obrigado por tentar ajudar, eu realmente aprecio isso. :) Felizmente, as GPUs são bastante normal nos dias de hoje, e este tipo de upscaling (conhecido como interpolação bilinear) funciona exatamente da mesma em todos eles, de modo que qualquer solução que eu, eventualmente, encontrar deve trabalhar universalmente.
Walt D

Respostas:

10

Eu encontrei uma solução! O plug- in SuperPNG preservará os valores RGB para pixels transparentes, desde que você deixe a opção "Limpar transparente" desmarcada.

Walt D
fonte
Estou curioso para saber se existe um Photoshop CC equivalente ao SuperPNG?
Marcel Wilson