Comment dire à Photoshop de conserver la couleur RVB des pixels entièrement transparents lors de l'exportation au format PNG?

12

Je rencontre un problème avec la façon dont Photoshop gère les pixels complètement transparents lors de l'exportation au format PNG, ce qui signifie que les canaux de couleur rouge, vert et bleu de tous les pixels complètement transparents sont enregistrés sous la forme 0 au lieu de la couleur que je définis dans Photoshop .

Par exemple: j'ai un fichier PSD avec un masque de calque. Certaines parties colorées de l'image sont rendues complètement transparentes par le masque de calque, mais je veux toujours que les canaux de couleur d'origine soient écrits dans le fichier PNG au lieu de seulement 0.

(Oui, le format PNG lui - même contient des données RVB même pour des pixels entièrement transparents. C'est un problème avec Photoshop, pas PNG.)

Si vous vous demandez pourquoi avoir des données de couleur est important quand un pixel est complètement transparent, voici quelques cas d'utilisation:

  • Le PNG est échantillonné à une résolution plus élevée que celle enregistrée sous et les valeurs échantillonnées sont interpolées entre les pixels voisins. Il peut en résulter un léger "halo" noir autour de l'image si l'interpolation n'est pas pondérée par la transparence. (Dans mon cas, ce suréchantillonnage se fait sur le GPU, ce qui pour des raisons de performances ne pèse pas sur la transparence.)
  • Les canaux rouge, vert, bleu et alpha du fichier PNG sont utilisés à des fins autres que le stockage d'informations sur les couleurs. (Dans mon cas, j'utilise les quatre canaux pour stocker les données nécessaires aux calculs d'éclairage en temps réel.)

Merci de votre aide!

ÉDITER

Je vais essayer d'expliquer le problème que j'ai avec l'utilisation de certaines aides visuelles. Il est difficile de montrer des choses transparentes, mais j'espère que cela clarifie mon problème:

J'ai un fichier PSD avec une couche et un masque de couche. La couche de couleur ressemble à ceci:

entrez la description de l'image ici

Son masque de calque ressemble à ceci:

entrez la description de l'image ici

Si j'exporte ce fichier PSD au format PNG, j'obtiens ceci:

entrez la description de l'image ici

(Les régions blanches sont en effet transparentes; elles semblent juste blanches sur le fond blanc.)

Vous vous demandez peut-être: quel est le problème? Ça a l'air bien! Eh bien, le problème est avec les informations de couleur stockées dans ces pixels transparents. À l'aide d'un outil pour supprimer les données d'opacité du PNG tout en laissant le RVB intact, nous pouvons voir les informations de couleur que Photoshop enregistre sur les pixels transparents:

entrez la description de l'image ici

Comme vous pouvez le voir, Photoshop a remplacé les informations de couleur des pixels transparents par du noir. Alors que, avec les données d'opacité supprimées du PNG, je veux qu'il ressemble exactement au calque de couleur d'origine:

entrez la description de l'image ici

Walt D
la source
Montrer un exemple de ce que vous vivez pourrait être plus utile. Principalement parce qu'il ne devrait pas y avoir d'informations sur les couleurs dans la partie transparente du PNG. Comment enregistrez-vous le PNG? Utilisez-vous "Enregistrer pour le Web" et avez-vous vérifié la "transparence"? Je sais que cela semble basique, mais je ne sais pas comment vous obtenez vos résultats.
ErickP
Oui, je n'ai pas posté d'exemples d'images parce que vous ne pouvez pas réellement voir le problème (sans charger le PNG dans un programme de peinture et désactiver la transparence), car le problème ne concerne que les pixels complètement transparents. Je vais voir si je peux trouver un moyen de visualiser ce dont je parle.
Walt D
Mais quand vous dites "il ne devrait pas y avoir d'informations sur les couleurs dans la partie transparente du PNG", je veux en fait qu'il y ait des informations sur les couleurs dans la partie transparente du PNG. Je sais que cela semble étrange, mais il existe certaines applications, telles que les deux que j'ai mentionnées ci-dessus. (Et oui, PNG prend totalement en charge les informations de couleur dans ses régions transparentes; je les utilise tout le temps dans les PNG générés de manière procédurale. Le problème est de savoir comment Photoshop enregistre les régions transparentes dans les PNG.)
Walt D
1
@ DA01 Je ne pense pas que ce soit un bug autant que c'est une optimisation que Photoshop (les PNG avec des couleurs uniformes prennent moins d'espace disque) qui brise mon cas d'utilisation particulier.
Walt D
1
@ErickP Merci d'avoir essayé d'aider, je l'apprécie vraiment. :) Heureusement, les GPU sont assez standard ces jours-ci, et ce type de mise à l'échelle (connu sous le nom d'interpolation bilinéaire) fonctionne exactement de la même manière sur tous, donc quelle que soit la solution que je trouve, elle devrait fonctionner universellement.
Walt D

Réponses:

10

J'ai trouvé une solution! Le plugin SuperPNG conservera les valeurs RVB pour les pixels transparents tant que vous ne cochez pas l'option "Nettoyer transparent".

Walt D
la source
Je suis curieux de savoir s'il existe un Photoshop CC équivalent à SuperPNG?
Marcel Wilson