我在导出为PNG时Photoshop如何处理完全透明的像素时遇到问题,即任何完全透明像素的红色,绿色和蓝色通道都保存为0,而不是我在Photoshop中定义的颜色。
例如:我有一个带图层蒙版的PSD文件。图层蒙版使图像的某些彩色部分完全透明,但是我仍然希望将原始颜色通道写入PNG文件,而不仅仅是0。
(是的,即使对于完全透明的像素,PNG格式本身也确实包含RGB数据。这是Photoshop的问题,不是PNG的问题。)
如果您想知道为什么像素完全透明时拥有颜色数据很重要,那么这里有一些用例:
- 正在以比其另存为更高的分辨率对PNG进行采样,并将采样值插值到相邻像素之间。如果插值不由透明度加权,则可能导致图像周围出现暗淡的黑色“光晕”。(就我而言,这种上采样是在GPU上完成的,出于性能方面的考虑,它不会影响透明度。)
- PNG文件中的红色,绿色,蓝色和Alpha通道用于存储颜色信息以外的目的。(就我而言,我使用所有四个通道来存储实时照明计算所需的数据。)
谢谢你的帮助!
编辑
我将尝试解释一些视觉辅助工具存在的问题。显示透明的内容很困难,但是希望这可以使我的问题更清楚:
我有一个带有一层和一层蒙版的PSD文件。颜色层如下所示:
其图层蒙版如下所示:
如果将此PSD文件导出为PNG,则会得到以下信息:
(白色区域确实是透明的;在白色背景下它们看起来只是白色。)
您可能想知道:这是什么问题?看起来不错!嗯,问题在于存储在这些透明像素中的颜色信息。使用工具从PNG去除不透明度数据,同时保持RGB不变,我们可以看到Photoshop保存到透明像素的颜色信息:
如您所见,Photoshop用黑色替换了透明像素中的颜色信息。鉴于从PNG中删除了不透明度数据,我希望它看起来与原始颜色层完全一样:
举例说明您正在经历的事情可能会更有帮助。主要是因为,PNG的透明部分中不应有任何颜色信息。您如何节省PNG?您是否正在使用“保存为Web”并检查了“透明度”?我知道这听起来很基础,但不确定您如何获得结果。
—
ErickP
是的,我没有发布任何示例图像,因为您实际上看不到问题(无需在绘制程序中加载PNG并关闭透明度),因为问题仅在于完全透明的像素。我将看看我是否可以想出一种方法来可视化我在说什么。
—
Walt D
但是当您说“ PNG的透明部分中不应有任何颜色信息”时,我实际上希望 PNG的透明部分中有颜色信息。我知道这听起来有些奇怪,但是有某些应用程序,例如我上面提到的两个。(是的,PNG完全支持其透明区域中的颜色信息;我一直在程序生成的PNG中使用它。问题在于Photoshop如何将透明区域保存为PNG。)
—
Walt D
@ DA01我认为这不是一个错误,而只是因为Photoshop所做的优化(具有统一颜色的PNG占用更少的磁盘空间)破坏了我的特定用例。
—
Walt D
@ErickP感谢您的帮助,我非常感谢。:)幸运的是,GPU在当今已经非常标准了,这种扩展(称为双线性插值)在所有GPU上都完全一样,因此我最终找到的任何解决方案都应该可以通用。
—
Walt D