导出为PNG时,如何告诉Photoshop保留全透明像素的RGB颜色?


12

我在导出为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

1
@ DA01我认为这不是一个错误,而只是因为Photoshop所做的优化(具有统一颜色的PNG占用更少的磁盘空间)破坏了我的特定用例。
Walt D

1
@ErickP感谢您的帮助,我非常感谢。:)幸运的是,GPU在当今已经非常标准了,这种扩展(称为双线性插值)在所有GPU上都完全一样,因此我最终找到的任何解决方案都应该可以通用。
Walt D

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.