通过不同方法保存PNG时的大小和透明度差异

平面设计 adobe-photoshop 层数 PNG 出口 透明度
2022-02-12 17:21:50

我正在将 PSD 图层导出为 PNG 以用于游戏的纹理图集。

当我这样做Copy -> New File (RGB 8-bit) -> Save As PNG时,生成的 PNG 非常重,Finder 显示白色背景而不是透明。

但是当我使用 时Export Layers to Files (24-bit PNG),生成的 PNG 会小 70-95%。

图片

我不需要 Photoshop 进行任何压缩——我的纹理创建软件可以自己完成。但我想通过脚本导出图层而不是手动保存它们。

  1. 是什么让Saved AsPNG 这么重?导出的图像是否会丢失任何颜色信息或质量下降?
  2. 为什么透明度不同?
2个回答

将 54kb PNG 文件复制到 Windows XP VM 将文件大小减少到 5kb。OS X Photoshop 版本在常规保存期间为文件添加了“com.apple.resourcefork”属性。您可以通过ls -l@ filename.png. 该属性不包含在文件中,但文件系统显示总大小。由于此属性,屏幕截图中的白色背景似乎出现了。具有正常文件大小的 PNG 以透明背景显示。

如果没有该属性,PNG 的大小约为 5kb。通过使用 pngcrush 删除 iTXt(870b)、pHYs (9b)、iCCP (2.64kb) 和 cHRM (32b) 块,将其减少到 1.6kb。

当“为 Web 和设备保存”时,Photoshop 仍然会在文件中添加辅助 tEXt/zTXt 块:0 Software: Adobe ImageReady以及大约 2000 个 XML 符号,例如:1 XML:com.adobe.xmp (: ): <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/"...

UPD:我错过了“保存为 Web 和设备”对话框窗口中的“元数据”选项。“无”仅添加0 Software: Adobe ImageReady到文件中。文件大小从 3.6kb 减少到 2.5kb。

因此,最终文件大小为:

  • Photoshop“另存为”:5.4kb(OS X 使用 90% 以上的空间来存储它)
  • Photoshop“保存为网络”,元数据=无:2.5kb
  • pngcrush ( -rem alla -rem text): 1.6kb

当您“另存为”时,您还包括元数据以及隐藏的应用程序特定数据。

通过使用导出到 PNG,您可以从文件中剥离元数据和任何应用程序特定数据,从而获得更小的文件大小。

两者之间应该没有质量损失。主要区别在于元数据。

我在这里没有显示透明度方面的任何差异。只要原始文件具有透明度,任何一种方法都会为我生成 32 位 PNG。上面的您的图像显示了 Finder/Explorer图标预览预览可能没有透明度,但实际图像可能具有透明度。预览图标是由图层组合生成的,它们并不总是正确地转换透明度。但这只是大多数情况下操作系统生成的文件预览。