¿Cómo le digo a Photoshop que conserve el color RGB de los píxeles totalmente transparentes al exportar como PNG?

12

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

ingrese la descripción de la imagen aquí

Su máscara de capa se ve así:

ingrese la descripción de la imagen aquí

Si exporto este archivo PSD como PNG, obtengo esto:

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

Walt D
fuente
Mostrar un ejemplo de lo que está experimentando podría ser más útil. Principalmente porque no debe haber ninguna información de color en la parte transparente de PNG. ¿Cómo estás guardando el PNG? ¿Está utilizando "Guardar para Web" y tiene marcada la "transparencia"? Sé que suena básico, pero no estoy seguro de cómo está obteniendo sus resultados.
ErickP
Sí, no publiqué ninguna imagen de ejemplo porque en realidad no se puede ver el problema (sin cargar el PNG en un programa de pintura y desactivar la transparencia), ya que el problema es solo con píxeles que son completamente transparentes. Veré si puedo encontrar una manera de visualizar de lo que estoy hablando.
Walt D
Pero cuando dice "no debe haber ninguna información de color en la parte transparente de PNG", en realidad quiero que haya información de color en la parte transparente de PNG. Sé que suena extraño, pero hay ciertas aplicaciones, como las dos que he mencionado anteriormente. (Y sí, PNG admite totalmente la información de color en sus regiones transparentes; lo uso todo el tiempo en PNG-procesal generada El problema es con la forma en Photoshop guarda regiones transparentes a PNG..)
Walt D
1
@ DA01 No creo que sea tanto un error como una optimización que hace Photoshop (los PNG con colores uniformes ocupan menos espacio en disco) que está rompiendo mi caso de uso particular.
Walt D
1
@ErickP Gracias por intentar ayudar, realmente lo aprecio. :) Afortunadamente, las GPU son bastante estándar en estos días, y este tipo de escalamiento (conocido como interpolación bilineal) funciona exactamente igual en todos ellos, por lo que cualquier solución que encuentre eventualmente debería funcionar universalmente.
Walt D

Respuestas:

10

¡Encontré una solución! El complemento SuperPNG conservará los valores RGB para píxeles transparentes siempre que deje la opción "Limpiar transparente" sin marcar.

Walt D
fuente
Tengo curiosidad por saber si hay un Photoshop CC equivalente a SuperPNG?
Marcel Wilson