psd文件过大-图片原始数据冗余
看看文件中的这些多余元数据是什么了,可以使用 PhotoShop 中的“文件简介 Alt+Shift+Ctrl+I”来查看,挨着翻一遍,切换到“原始数据”标签页时,这一大堆东西什么鬼就特别显眼,没有什么语义一看就很异常冗余。

这些都是什么呢?
于是又到了求助 Google 的环节, 这是什么东西?从 Adobe 的 XMP 官方文档可以找到如下说明(第 32 页):
photoshop:DocumentAncestors
If the source document for a copy-and-paste or place operation has a document ID, that ID is added to this list in the destination document’s XMP.
当你进行复制粘贴、拖入、导入新文件等操作时,如果这些内容来源有文档 ID,就会被记录到当前文档的 XMP 数据中,并且这些记录是不断累加的,所以特别是那些反复编辑的文档,就会慢慢累计越来越多的“文档来源”数据。
官方解释比较模糊,其它帖子也没说明白“文档 ID”到底是怎么记录的,有什么用途。文件的 XMP 数据可以导出,上面示例文件就包含了 11 万多条的“文档来源”数据,里面又分为几种不同的标签内容,这么海量的来源数据真不知道都它在记录些什么(导出的 XMP 数据在文末可下载)。
该怎么办?
遗憾的是这些数据完全是软件自动记录,没办法禁用这种记录行为。因为 XMP 数据的开放性与可编辑性,需要想办法直接清理掉文件中的冗余数据,而不是导出图片的时候再清理,不然还会继续存在于 PSD 文件中。
当然,这么浅显的解决思路一定有大神已经实现了,利用 PhotoShop 的脚本事件功能,就能自动清理文件中的“文档来源”数据:
- 将下面这段代码存为 .jsx 格式(也有现成的在文末可下载)
function deleteDocumentAncestorsMetadata() {
whatApp = String(app.name);
if (whatApp.search("Photoshop") > 0) {
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);
xmp.deleteProperty(XMPConst.NS_PHOTOSHOP, "DocumentAncestors");
app.activeDocument.xmpMetadata.rawData = xmp.serialize();
}
}
deleteDocumentAncestorsMetadata();
-
在 PhotoShop 中打开“文件 > 脚本 > 脚本事件管理器”窗口,照着下图设置
这种方法的效果就是,PhotoShop 每次打开文件,都会先自动清理掉冗余的“文档来源”数据,然后你就可以开心地随意保存图片了,并且对应的 PSD 文件都不会大得离谱。如果文件依然很大,那就是它本来就应该那么大,

最后提醒一下,以上方法仅解决元数据造成的文件过大和 PS 运行缓慢,如果文件本身尺寸或图层造成的问题,请参考以下情况对症解决: -
清理空图层
-
清理未使用的样式
-
合理使用“智能对象”
-
适量的栅格化图层
-
保存时隐藏全部图层
-
发送文件时先压缩打包
注意分辨率,小尺寸的图,分辨率可以大一点。大尺寸的图,应该小一点,以下参数仅供参考:名片 600-800dpi、宣传单、画册 300dpi、海报印刷 260dpi、喷绘精喷 140DPI、喷布或超大尺寸 23.5-72dpi.假设,喷布建了一块 10 米 ×5 米的图,分辨率一般 30-45 即可,如果建到了 300,什么电脑都不行的