尝试过的方案
方案1
元数据清理工具,例如:Exif Tag Remover,Exiftool 之类的,能清除部分元数据,但无法完全清除PSD中的元数据。
方案2
找到了这个博客的解决方案:一键大幅清理PSD文件容量占用
递归遍历图层对每个智能对象进行处理。
以下代码请复制到文本编辑器中保存为:PsDeepCleaner.jsx,或者下载下方操作步骤中附件。
/**
* @author Jason
* @email jiangran@126.com
* @name PsDeepCleaner
* @description photoshop metadata deep clean script
*/
function deleteDocumentAncestorsMetadata() {
if(String(app.name).search("Photoshop") > 0) {
if(!documents.length) {
alert("您没有打开文件。请打开一个文件再执行此脚本。")
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();
clearDocumentAncestorsForAllLayers(app.activeDocument);
if (app.activeDocument !== mainDocument) {
app.activeDocument.close(SaveOptions.SAVECHANGES);
}else{
app.activeDocument.save();
}
}
}
function clearDocumentAncestorsForAllLayers(doc) {
try {
if (doc == undefined) {
return;
}
for (var i = 0; i < doc.layers.length; i++) {
var curLayer = doc.layers[i];
if (curLayer.typename != "ArtLayer") {
clearDocumentAncestorsForAllLayers(curLayer);
continue;
}
if (curLayer.kind == "LayerKind.SMARTOBJECT") {
app.activeDocument.activeLayer = curLayer;
var idplacedLayerEditContents = stringIDToTypeID("placedLayerEditContents");
var actionDescriptor = new ActionDescriptor();
executeAction(idplacedLayerEditContents, actionDescriptor, DialogModes.NO);
if(app.activeDocument.activeLayer == curLayer){
continue;
}
deleteDocumentAncestorsMetadata()
layerSetStr += ("\n"+curLayer.name)
}
}
} catch (e) {
alert("图层清理失败,请重启PS后重试。文件名:"+doc+";错误信息:"+e)
}
}
var layerSetStr = "";
var mainDocument = app.activeDocument;
function start(){
deleteDocumentAncestorsMetadata();
alert("清除完毕。\n[文件名]:"+mainDocument.name+"\n[图层集合]:"+layerSetStr);
}
try{
if(confirm("开始清理后PS会卡住,请耐心等待完成提示。开始清理?")){
start();
}
} catch (e) {
alert("清理失败,请重启PS后重试,错误信息:"+e)
}
操作步骤
1、下载PsDeepCleaner-中文.jsx
文件。
2、在PS中打开巨大的PSD文件(卡了耐心等待一下)。
3、执行脚本(文件-脚本-浏览)
4、载入脚本后,提示是否清理,选择是。(如果文件比较大,PS会卡一会,请耐心等待)
5、清理完成
再看一下你的PSD文件大小,应该已经恢复他本身的体积了。
注:脚本处理过程会消耗比较大的内存,如果清理提示失败,请重启PS并关闭其他占用内存的程序再次尝试。