Tengo un problema con la forma en que Photoshop maneja píxeles completamente transparentes al exportar como PNG, que es que los canales de color rojo, verde y azul de los píxeles completamente transparentes se guardan como 0 en lugar del color que defino en Photoshop .
Por ejemplo: tengo un archivo PSD con una máscara de capa. La máscara de capa hace que algunas partes coloreadas de la imagen sean completamente transparentes, pero todavía quiero que los canales de color originales se escriban en el archivo PNG en lugar de solo 0.
(Sí, el formato PNG en sí hace contener datos RGB incluso para los píxeles completamente transparentes. Este es un problema con Photoshop, no PNG).
Si se pregunta por qué es importante tener datos de color cuando un píxel es completamente transparente, aquí hay un par de casos de uso:
- El PNG se muestrea a una resolución más alta de la que se guarda y los valores muestreados se interpolan entre píxeles vecinos. Esto puede resultar en un tenue "halo" negro alrededor de la imagen si la interpolación no está ponderada por la transparencia. (En mi caso, este muestreo ascendente se realiza en la GPU, que por razones de rendimiento no pesa por la transparencia).
- Los canales rojo, verde, azul y alfa en el archivo PNG se están utilizando para fines distintos al almacenamiento de información de color. (En mi caso, uso los cuatro canales para almacenar los datos necesarios para los cálculos de iluminación en tiempo real).
¡Gracias por tu ayuda!
EDITAR
Voy a tratar de explicar el problema que tengo con el uso de algunas ayudas visuales. Mostrar cosas transparentes es difícil, pero espero que esto aclare mi problema:
Tengo un archivo PSD con una capa y una máscara de capa. La capa de color se ve así:
Su máscara de capa se ve así:
Si exporto este archivo PSD como PNG, obtengo esto:
(Las regiones blancas son de hecho transparentes; solo se ven blancas contra el fondo blanco).
Quizás se pregunte: ¿Cuál es el problema? Eso se ve bien! Bueno, el problema es con la información de color almacenada en esos píxeles transparentes. Usando una herramienta para eliminar los datos de opacidad del PNG y dejar el RGB intacto, podemos ver la información de color que Photoshop guarda en los píxeles transparentes:
Como puede ver, Photoshop ha reemplazado la información de color en los píxeles transparentes con negro. Mientras que, con los datos de opacidad eliminados de PNG, quiero que se vea exactamente como la capa de color original: