我在导出为 PNG 时 Photoshop 如何处理完全透明像素时遇到问题,即任何完全透明像素的红色、绿色和蓝色通道都保存为 0,而不是我在 Photoshop 中定义的颜色.
例如:我有一个带有图层蒙版的 PSD 文件。图层蒙版使图像的某些彩色部分完全透明,但我仍然希望将原始颜色通道写入 PNG 文件,而不仅仅是 0。
(是的,即使对于完全透明的像素,PNG 格式本身也包含 RGB 数据。这是 Photoshop 的问题,而不是 PNG。)
如果您想知道为什么当像素完全透明时颜色数据很重要,那么这里有几个用例:
- PNG 以比保存时更高的分辨率进行采样,并且采样值在相邻像素之间进行插值。如果插值没有通过透明度加权,这可能会导致图像周围出现微弱的黑色“光晕”。(在我的例子中,这种上采样是在 GPU 上完成的,出于性能原因,它不考虑透明度。)
- PNG 文件中的红色、绿色、蓝色和 Alpha 通道用于存储颜色信息以外的其他用途。(在我的例子中,我使用所有四个通道来存储实时照明计算所需的数据。)
谢谢你的帮助!
编辑
我将尝试使用一些视觉辅助工具来解释我遇到的问题。显示透明的东西很难,但希望这能让我的问题更清楚:
我有一个带有一层和一个图层蒙版的 PSD 文件。颜色层如下所示:
它的图层蒙版如下所示:
如果我将此 PSD 文件导出为 PNG,我会得到:
(白色区域确实是透明的;它们只是在白色背景下看起来是白色的。)
您可能想知道:有什么问题?看起来不错!好吧,问题在于存储在这些透明像素中的颜色信息。使用工具从 PNG 中去除不透明度数据,同时保持 RGB 不变,我们可以看到 Photoshop 保存到透明像素的颜色信息:
如您所见,Photoshop 已将透明像素中的颜色信息替换为黑色。而从 PNG 中删除不透明度数据后,我希望它看起来与原始颜色层完全相同: