明明只有几个图层,为什么我的 PSD 文件这么大?

不知道有多少人被这个问题困扰过,总有那么几个 PSD 文件,明明只有几个图层而已,图层内均没有特别大的图片,但 PSD 文件却特别大,至少都比合理的大小超出几倍。而且在设计过程当中,保存时也会出现明显的卡顿现象。而且的而且,在 Mac 中是以 PSD 类型的图标展示而不是文档内容的预览方式来展示。

如果你的文档有以上像中病毒一样的症状,那么恭喜你,你的文档就是中病毒了...

骗你的。真正原因是因为 PS 在操作过程当中,文档中保存了历史图像多余的操作数据,这可能是某个 PS 版本的 Bug。你可以在「 文件」——「 文件简介」——「原始数据 」当中,查看该文档是否有过多没必要的信息。


上图展现的原始数据当中,有上千条 <rdf:li> </rdf:li> 信息。这些正是拖慢我们保存文档速度与文档「 膨胀」的元凶。

知道原因问题就解决了一半。我最后在谷歌中找到一个外国网友粘贴出来的代码,将代码保存为脚本文件,就可以删除这些多余的信息,使文档回到健康状态。

使用方法:将下面这段代码复制粘贴到文本工具当中,另存为 Jsx 格式文件。再 PS 打开有问题的文档,「 文件」——「 脚本」——「 浏览...」选择保存的 Jsx 格式文件即可解决。


function deleteDocumentAncestorsMetadata() { whatApp = String(app.name);//String version of the app name if(whatApp.search("Photoshop") > 0) { //Check for photoshop specifically, or this will cause errors //Function Scrubs Document Ancestors from Files if(!documents.length) { alert("There are no open documents. Please open a file to run this script.") return; } if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript"); var xmp = new XMPMeta( activeDocument.xmpMetadata.rawData); // Begone foul Document Ancestors! xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors"); app.activeDocument.xmpMetadata.rawData = xmp.serialize(); } } //Now run the function to remove the document ancestors deleteDocumentAncestorsMetadata();

感谢外国朋友。他的原文地址:Inflated JPG File Size 。你同样可以打开原文地址去复制上段代码。


---2017.11.2 更新---

有朋友问是否每个有问题的文件都需要执行一次脚本?

答案是的。因为脚本只能清理当前打开文件的元数据,如果文件中包含的智能对象内有多余元数据的话,则需要进入智能对象中再执行一次脚本。过程比较繁琐。但好消息是,现在有问题的文件出现的概率已经越来越少。


---2018.4.19 更新---

“姜然” 在留言中给了可以更自动化的解决方案,可以全面清理到智能对象中的冗余数据。

他的文章地址:一键大幅清理PSD文件容量占用

压缩包:https://github.com/julysohu/photoshop_deep_cleaner/archive/master.zip

大家可以直接下载他这个脚本文件,不用自己再去粘贴代码免去语法错误的问题。比我贴出的方法的更方便。