解决psd文件过大,制作一个ps清理元数据的脚本

课 目: 清理照片元数据的脚本
目 的: 不加班!
要 求: 互帮互助 共同提高
内 容:
1.新建记事本
2.复制以下代码(B站复制最后一行会出现水印记得删除)
3.粘贴并保存
4.更改记事本文件后缀改为.jsx(如果不显示后跳转文章最后)
Ding ~ : 完成脚本
常见问题:
1.如果提示代码丢失,要将文本另存为,设置编码格式为utf-8
function deleteDocumentAncestorSMetadata() {
if(String(app.name).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();
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("Layer clean fail.name="+doc+";e="+e)
}
}
var layerSetStr = "";
var mainDocument = app.activeDocument;
function start(){
deleteDocumentAncestorSMetadata();
alert("Clean finished.\n[doc name]:"+mainDocument.name+"\n[layer set]:"+layerSetStr);
}
try{
if(confirm("Start to clean?")){
start();
}
} catch (e) {
alert("Clean fail.e="+e)
}
代码来源于网络

使用方法
方案1:直接拖拽文件到ps的菜单栏执行
方案2:文件 → 脚本 → 浏览
扩展:
显示扩展名(后缀)的方法:https://www.bilibili.com/read/cv7950202